Skip to content

Commit 28c661c

Browse files
committed
kvserver: log active spanconfigs when test takes long time
1 parent 80b4a4f commit 28c661c

File tree

1 file changed

+41
-14
lines changed

1 file changed

+41
-14
lines changed

pkg/kv/kvserver/replicate_queue_test.go

Lines changed: 41 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)