Skip to content

Commit 1591a70

Browse files
committed
kvserver: deflake TestRestoreReplicas
Epic: none Release note: none
1 parent 9e0395f commit 1591a70

File tree

1 file changed

+18
-22
lines changed

1 file changed

+18
-22
lines changed

pkg/kv/kvserver/client_raft_test.go

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -391,40 +391,36 @@ func TestRestoreReplicas(t *testing.T) {
391391

392392
require.NoError(t, tc.Restart())
393393

394-
// Find the leaseholder and follower. The restart may cause the Raft
395-
// leadership to bounce around a bit, since we don't fully enable Raft
396-
// prevote, so we loop for a bit until we find the leaseholder.
394+
// The restart may cause the Raft leadership and the lease to bounce around a
395+
// bit, so we loop until we find the leaseholder and able to propose the
396+
// second increment.
397397
incArgs = incrementArgs(key, 5)
398-
var followerStore *kvserver.Store
399398
testutils.SucceedsSoon(t, func() error {
400399
var pErr *kvpb.Error
401400
for i := 0; i < tc.NumServers(); i++ {
402401
_, pErr = kv.SendWrapped(ctx, tc.GetFirstStoreFromServer(t, i).TestSender(), incArgs)
403402
if pErr == nil {
404-
followerStore = tc.GetFirstStoreFromServer(t, 1-i)
405-
break
403+
return nil
406404
}
407405
require.IsType(t, &kvpb.NotLeaseHolderError{}, pErr.GetDetail())
408406
}
409407
return pErr.GoError()
410408
})
411409

412-
// The follower should now return a NLHE.
413-
_, pErr = kv.SendWrapped(ctx, followerStore.TestSender(), incArgs)
414-
require.Error(t, pErr.GoError())
415-
require.IsType(t, &kvpb.NotLeaseHolderError{}, pErr.GetDetail())
416-
417-
testutils.SucceedsSoon(t, func() error {
418-
getArgs := getArgs(key)
419-
if reply, err := kv.SendWrappedWith(ctx, followerStore.TestSender(), kvpb.Header{
420-
ReadConsistency: kvpb.INCONSISTENT,
421-
}, getArgs); err != nil {
422-
return errors.Errorf("failed to read data: %s", err)
423-
} else if e, v := int64(28), mustGetInt(reply.(*kvpb.GetResponse).Value); v != e {
424-
return errors.Errorf("failed to read correct data: expected %d, got %d", e, v)
425-
}
426-
return nil
427-
})
410+
// Both servers should eventually observe the new value.
411+
for i := 0; i < tc.NumServers(); i++ {
412+
testutils.SucceedsSoon(t, func() error {
413+
getArgs := getArgs(key)
414+
if reply, err := kv.SendWrappedWith(ctx, tc.GetFirstStoreFromServer(t, i).TestSender(), kvpb.Header{
415+
ReadConsistency: kvpb.INCONSISTENT,
416+
}, getArgs); err != nil {
417+
return errors.Errorf("failed to read data: %s", err)
418+
} else if e, v := int64(28), mustGetInt(reply.(*kvpb.GetResponse).Value); v != e {
419+
return errors.Errorf("failed to read correct data: expected %d, got %d", e, v)
420+
}
421+
return nil
422+
})
423+
}
428424

429425
validate := func(s *kvserver.Store) {
430426
repl := s.LookupReplica(key)

0 commit comments

Comments
 (0)