@@ -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