@@ -2274,37 +2274,64 @@ SELECT * FROM (
22742274 t * testing.T ,
22752275 tc * testcluster.TestCluster ,
22762276 db * gosql.DB ,
2277- ) (numVoters , numNonVoters int , _ roachpb.RangeID , err error ) {
2277+ ) (numVoters , numNonVoters int , _ roachpb.RangeDescriptor , err error ) {
22782278 if err := forceScanOnAllReplicationAndSplitQueues (tc ); err != nil {
2279- return 0 , 0 , 0 , err
2279+ return 0 , 0 , roachpb. RangeDescriptor {} , err
22802280 }
22812281
2282- var rangeID roachpb.RangeID
2283- if err := db .QueryRow ("SELECT range_id FROM [SHOW RANGES FROM TABLE t] LIMIT 1" ).Scan (& rangeID ); err != nil {
2284- return 0 , 0 , 0 , err
2282+ var key roachpb.Key
2283+ require .NoError (t ,
2284+ db .QueryRow (`
2285+ SELECT start_key from crdb_internal.ranges_no_leases WHERE range_id IN
2286+ (SELECT range_id FROM [SHOW RANGES FROM TABLE t] LIMIT 1);
2287+ ` ).Scan (& key ))
2288+ desc , err := tc .LookupRange (key )
2289+ if err != nil {
2290+ return 0 , 0 , roachpb.RangeDescriptor {}, err
22852291 }
2292+
22862293 iterateOverAllStores (t , tc , func (s * kvserver.Store ) error {
2287- if replica , err := s .GetReplica (rangeID ); err == nil && replica .OwnsValidLease (ctx , replica .Clock ().NowAsClockTimestamp ()) {
2294+ if replica , err := s .GetReplica (desc .RangeID ); err == nil && replica .OwnsValidLease (ctx ,
2295+ replica .Clock ().NowAsClockTimestamp ()) {
22882296 desc := replica .Desc ()
22892297 numVoters = len (desc .Replicas ().VoterDescriptors ())
22902298 numNonVoters = len (desc .Replicas ().NonVoterDescriptors ())
22912299 }
22922300 return nil
22932301 })
2294- return numVoters , numNonVoters , rangeID , nil
2302+ return numVoters , numNonVoters , desc , nil
22952303 }
22962304
22972305 // Ensure we are meeting our ZONE survival configuration.
2306+ logMore := time .After (15 * time .Second )
22982307 testutils .SucceedsSoon (t , func () error {
2299- numVoters , numNonVoters , rangeID , err := computeNumberOfReplicas (t , tc , db )
2308+ numVoters , numNonVoters , desc , err := computeNumberOfReplicas (t , tc , db )
2309+
23002310 require .NoError (t , err )
2311+ select {
2312+ default :
2313+ case <- logMore :
2314+ // If the retry loop has been stuck for a while, log the span config
2315+ // as seen by each store. For it to apply, the range's span needs to
2316+ // be contained in the start key's span config. If this is not the
2317+ // case, it can explain why the replication changes are not being made.
2318+ iterateOverAllStores (t , tc , func (s * kvserver.Store ) error {
2319+ cfg , sp , err := s .GetStoreConfig ().SpanConfigSubscriber .GetSpanConfigForKey (ctx , desc .StartKey )
2320+ if err != nil {
2321+ return err
2322+ }
2323+ t .Logf ("s%d: r%d %s -> span config %s %s" , s .StoreID (), desc .RangeID , desc .RSpan (), sp , & cfg )
2324+ return nil
2325+ })
2326+ }
2327+
23012328 if numVoters != 3 {
2302- return errors .Newf ("expected 3 voters for r%d; got %d" , rangeID , numVoters )
2329+ return errors .Newf ("expected 3 voters for r%d; got %d" , desc . RangeID , numVoters )
23032330 }
23042331 if numNonVoters != 2 {
2305- return errors .Newf ("expected 2 non-voters for r%d; got %v" , rangeID , numNonVoters )
2332+ return errors .Newf ("expected 2 non-voters for r%d; got %v" , desc . RangeID , numNonVoters )
23062333 }
2307- t .Logf ("success: %d has %d voters and %d non-voters" , rangeID , numVoters , numNonVoters )
2334+ t .Logf ("success: %d has %d voters and %d non-voters" , desc . RangeID , numVoters , numNonVoters )
23082335 return nil
23092336 })
23102337
@@ -2320,13 +2347,13 @@ SELECT * FROM (
23202347
23212348 // Ensure we are meeting our REGION survival configuration.
23222349 testutils .SucceedsSoon (t , func () error {
2323- numVoters , numNonVoters , rangeID , err := computeNumberOfReplicas (t , tc , db )
2350+ numVoters , numNonVoters , desc , err := computeNumberOfReplicas (t , tc , db )
23242351 require .NoError (t , err )
23252352 if numVoters != 5 {
2326- return errors .Newf ("expected 5 voters for r%d; got %d" , rangeID , numVoters )
2353+ return errors .Newf ("expected 5 voters for r%d; got %d" , desc . RangeID , numVoters )
23272354 }
23282355 if numNonVoters != 0 {
2329- return errors .Newf ("expected 0 non-voters for r%d; got %v" , rangeID , numNonVoters )
2356+ return errors .Newf ("expected 0 non-voters for r%d; got %v" , desc . RangeID , numNonVoters )
23302357 }
23312358 return nil
23322359 })
0 commit comments