Skip to content

Commit d46e3a4

Browse files
authored
Merge pull request #157052 from cockroachdb/blathers/backport-release-24.3-157012
release-24.3: kvserver: deflake TestRestoreReplicas
2 parents 24af825 + 682b887 commit d46e3a4

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
@@ -390,40 +390,36 @@ func TestRestoreReplicas(t *testing.T) {
390390

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

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

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

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

0 commit comments

Comments
 (0)