Skip to content

Commit b2158da

Browse files
craig[bot]pav-kv
andcommitted
Merge #158280
158280: kvserver: split state/raft engines in testContext r=arulajmani a=pav-kv This PR makes tests using `testContext` aware of the separated engines. Part of #97627 Co-authored-by: Pavel Kalinnikov <pavel@cockroachlabs.com>
2 parents 076a595 + 2c91ede commit b2158da

File tree

9 files changed

+63
-70
lines changed

9 files changed

+63
-70
lines changed

pkg/kv/kvserver/client_merge_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5499,7 +5499,7 @@ func TestStoreMergeGCHint(t *testing.T) {
54995499
require.Greater(t, gcHint.LatestRangeDeleteTimestamp.WallTime, beforeSecondDel,
55005500
"highest timestamp wasn't picked up")
55015501
}
5502-
repl.AssertState(ctx, store.TODOEngine())
5502+
repl.AssertState(ctx, store.StateEngine(), store.LogEngine())
55035503
})
55045504
}
55055505
}

pkg/kv/kvserver/client_split_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2389,7 +2389,7 @@ func TestStoreSplitGCThreshold(t *testing.T) {
23892389
t.Fatalf("expected RHS's GCThreshold is equal to %v, but got %v", specifiedGCThreshold, gcThreshold)
23902390
}
23912391

2392-
repl.AssertState(ctx, store.TODOEngine())
2392+
repl.AssertState(ctx, store.StateEngine(), store.LogEngine())
23932393
}
23942394

23952395
func TestStoreSplitGCHint(t *testing.T) {
@@ -2451,7 +2451,7 @@ func TestStoreSplitGCHint(t *testing.T) {
24512451
gcHint = repl.GetGCHint()
24522452
require.False(t, gcHint.IsEmpty(), "GC hint is empty after range delete")
24532453

2454-
repl.AssertState(ctx, store.TODOEngine())
2454+
repl.AssertState(ctx, store.StateEngine(), store.LogEngine())
24552455
}
24562456

24572457
// TestStoreRangeSplitRaceUninitializedRHS reproduces #7600 (before it was

pkg/kv/kvserver/helpers_test.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/batcheval/result"
2727
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/intentresolver"
2828
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/kvserverpb"
29+
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/kvstorage"
2930
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/liveness"
3031
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/liveness/livenesspb"
3132
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/logstore"
@@ -318,12 +319,14 @@ func (r *Replica) Breaker() *circuit.Breaker {
318319
return r.breaker.wrapped
319320
}
320321

321-
func (r *Replica) AssertState(ctx context.Context, reader storage.Reader) {
322+
func (r *Replica) AssertState(
323+
ctx context.Context, stateRO kvstorage.StateRO, raftRO kvstorage.RaftRO,
324+
) {
322325
r.raftMu.Lock()
323326
defer r.raftMu.Unlock()
324327
r.mu.RLock()
325328
defer r.mu.RUnlock()
326-
r.assertStateRaftMuLockedReplicaMuRLocked(ctx, reader)
329+
r.assertStateRaftMuLockedReplicaMuRLocked(ctx, stateRO, raftRO)
327330
}
328331

329332
func (r *Replica) RaftLock() {

pkg/kv/kvserver/mvcc_gc_queue_test.go

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1145,14 +1145,12 @@ func TestMVCCGCQueueTransactionTable(t *testing.T) {
11451145
txns[strKey] = *txn
11461146
for _, addrKey := range []roachpb.Key{baseKey, outsideKey} {
11471147
key := keys.TransactionKey(addrKey, txn.ID)
1148-
if err := storage.MVCCPutProto(ctx, tc.engine, key, hlc.Timestamp{}, txn, storage.MVCCWriteOptions{}); err != nil {
1149-
t.Fatal(err)
1150-
}
1148+
require.NoError(t, storage.MVCCPutProto(
1149+
ctx, tc.stateEng, key, hlc.Timestamp{}, txn, storage.MVCCWriteOptions{},
1150+
))
11511151
}
11521152
entry := roachpb.AbortSpanEntry{Key: txn.Key, Timestamp: txn.LastActive()}
1153-
if err := tc.repl.abortSpan.Put(ctx, tc.engine, nil, txn.ID, &entry); err != nil {
1154-
t.Fatal(err)
1155-
}
1153+
require.NoError(t, tc.repl.abortSpan.Put(ctx, tc.stateEng, nil, txn.ID, &entry))
11561154
}
11571155

11581156
// Run GC.
@@ -1174,7 +1172,7 @@ func TestMVCCGCQueueTransactionTable(t *testing.T) {
11741172
txnKey := keys.TransactionKey(roachpb.Key(strKey), txns[strKey].ID)
11751173
txnTombstoneTSCacheKey := transactionTombstoneMarker(
11761174
roachpb.Key(strKey), txns[strKey].ID)
1177-
ok, err := storage.MVCCGetProto(ctx, tc.engine, txnKey, hlc.Timestamp{}, txn,
1175+
ok, err := storage.MVCCGetProto(ctx, tc.stateEng, txnKey, hlc.Timestamp{}, txn,
11781176
storage.MVCCGetOptions{})
11791177
if err != nil {
11801178
return err
@@ -1238,11 +1236,9 @@ func TestMVCCGCQueueTransactionTable(t *testing.T) {
12381236
"but only %d are left", exp, count)
12391237
}
12401238

1241-
batch := tc.engine.NewSnapshot()
1242-
defer batch.Close()
12431239
tc.repl.raftMu.Lock()
12441240
tc.repl.mu.RLock()
1245-
tc.repl.assertStateRaftMuLockedReplicaMuRLocked(ctx, batch) // check that in-mem and on-disk state were updated
1241+
tc.repl.assertStateRaftMuLockedReplicaMuRLocked(ctx, tc.stateEng, tc.raftEng) // check that in-mem and on-disk state were updated
12461242
tc.repl.mu.RUnlock()
12471243
tc.repl.raftMu.Unlock()
12481244
}
@@ -1349,9 +1345,9 @@ func TestMVCCGCQueueLastProcessedTimestamps(t *testing.T) {
13491345

13501346
ts := tc.Clock().Now()
13511347
for _, lpv := range lastProcessedVals {
1352-
if err := storage.MVCCPutProto(ctx, tc.engine, lpv.key, hlc.Timestamp{}, &ts, storage.MVCCWriteOptions{}); err != nil {
1353-
t.Fatal(err)
1354-
}
1348+
require.NoError(t, storage.MVCCPutProto(
1349+
ctx, tc.stateEng, lpv.key, hlc.Timestamp{}, &ts, storage.MVCCWriteOptions{},
1350+
))
13551351
}
13561352

13571353
confReader, err := tc.store.GetConfReader(ctx)
@@ -1370,7 +1366,7 @@ func TestMVCCGCQueueLastProcessedTimestamps(t *testing.T) {
13701366
// Verify GC.
13711367
testutils.SucceedsSoon(t, func() error {
13721368
for _, lpv := range lastProcessedVals {
1373-
ok, err := storage.MVCCGetProto(ctx, tc.engine, lpv.key, hlc.Timestamp{}, &ts,
1369+
ok, err := storage.MVCCGetProto(ctx, tc.stateEng, lpv.key, hlc.Timestamp{}, &ts,
13741370
storage.MVCCGetOptions{})
13751371
if err != nil {
13761372
return err

pkg/kv/kvserver/replica.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1973,18 +1973,18 @@ func (r *Replica) State(ctx context.Context) kvserverpb.RangeInfo {
19731973
// to check that the in-memory and on-disk states of the Replica are congruent.
19741974
// Requires that r.raftMu is locked and r.mu is read locked.
19751975
func (r *Replica) assertStateRaftMuLockedReplicaMuRLocked(
1976-
ctx context.Context, reader storage.Reader,
1976+
ctx context.Context, stateRO kvstorage.StateRO, raftRO kvstorage.RaftRO,
19771977
) {
19781978
if ts := r.shMu.state.TruncatedState; ts != nil {
19791979
log.KvExec.Fatalf(ctx, "non-empty RaftTruncatedState in ReplicaState: %+v", ts)
1980-
} else if loaded, err := r.raftMu.stateLoader.LoadRaftTruncatedState(ctx, reader); err != nil {
1980+
} else if loaded, err := r.raftMu.stateLoader.LoadRaftTruncatedState(ctx, raftRO); err != nil {
19811981
log.KvExec.Fatalf(ctx, "%s", err)
19821982
} else if ts := r.asLogStorage().shMu.trunc; loaded != ts {
19831983
log.KvExec.Fatalf(ctx, "on-disk and in-memory RaftTruncatedState diverged: %s",
19841984
redact.Safe(pretty.Diff(loaded, ts)))
19851985
}
19861986

1987-
diskState, err := r.raftMu.stateLoader.Load(ctx, reader, r.shMu.state.Desc)
1987+
diskState, err := r.raftMu.stateLoader.Load(ctx, stateRO, r.shMu.state.Desc)
19881988
if err != nil {
19891989
log.KvExec.Fatalf(ctx, "%v", err)
19901990
}
@@ -2041,7 +2041,7 @@ func (r *Replica) assertStateRaftMuLockedReplicaMuRLocked(
20412041
log.KvExec.Fatalf(ctx, "replica's replicaID %d diverges from descriptor %+v", r.replicaID, r.shMu.state.Desc)
20422042
}
20432043
}
2044-
diskReplID, err := r.raftMu.stateLoader.LoadRaftReplicaID(ctx, reader)
2044+
diskReplID, err := r.raftMu.stateLoader.LoadRaftReplicaID(ctx, stateRO)
20452045
if err != nil {
20462046
log.KvExec.Fatalf(ctx, "%s", err)
20472047
}

pkg/kv/kvserver/replica_application_state_machine_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ func TestReplicaStateMachineRaftLogTruncationStronglyCoupled(t *testing.T) {
255255
require.Equal(t, expectedSize, ls.shMu.size)
256256
require.Equal(t, accurate, ls.shMu.sizeTrusted)
257257
truncState, err := logstore.NewStateLoader(r.RangeID).LoadRaftTruncatedState(
258-
context.Background(), tc.engine)
258+
context.Background(), tc.raftEng)
259259
require.NoError(t, err)
260260
require.Equal(t, ls.shMu.trunc.Index, truncState.Index)
261261
}()

pkg/kv/kvserver/replica_raft.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1283,9 +1283,8 @@ func (r *Replica) handleRaftReadyRaftMuLocked(
12831283

12841284
if shouldAssert {
12851285
sm.r.mu.RLock()
1286-
// TODO(sep-raft-log): either check only statemachine invariants or
1287-
// pass both engines in.
1288-
sm.r.assertStateRaftMuLockedReplicaMuRLocked(ctx, sm.r.store.TODOEngine())
1286+
sm.r.assertStateRaftMuLockedReplicaMuRLocked(
1287+
ctx, sm.r.store.StateEngine(), sm.r.store.LogEngine())
12891288
sm.r.mu.RUnlock()
12901289
}
12911290

0 commit comments

Comments
 (0)