Skip to content

Commit 3b45e6a

Browse files
craig[bot]pav-kv
andcommitted
Merge #157965
157965: kvserver: timeout queryRangeLog in test r=miraradeva a=pav-kv The query can be stuck (for yet unknown reason), and the ongoing bug in CI prevents us from seeing logs when the test is terminated by the higher level timeout. Timeout using context, so that logs are dumped. Informs #156293 Co-authored-by: Pavel Kalinnikov <[email protected]>
2 parents 86eb0d0 + c35bfa2 commit 3b45e6a

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

pkg/kv/kvserver/replicate_queue_test.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ func TestReplicateQueueRebalance(t *testing.T) {
158158

159159
// Query the range log to see if anything unexpected happened. Concretely,
160160
// we'll make sure that our tracked ranges never had >3 replicas.
161-
infos, err := queryRangeLog(tc.Conns[0], `SELECT info FROM system.rangelog ORDER BY timestamp DESC`)
161+
infos, err := queryRangeLog(ctx, tc.Conns[0], `SELECT info FROM system.rangelog ORDER BY timestamp DESC`)
162162
require.NoError(t, err)
163163
for _, info := range infos {
164164
if _, ok := trackedRanges[info.UpdatedDesc.RangeID]; !ok || len(info.UpdatedDesc.Replicas().VoterDescriptors()) <= 3 {
@@ -366,7 +366,13 @@ func TestReplicateQueueRebalanceMultiStore(t *testing.T) {
366366

367367
// Query the range log to see if anything unexpected happened. Concretely,
368368
// we'll make sure that our tracked ranges never had >3 replicas.
369-
infos, err := queryRangeLog(tc.Conns[0], `SELECT info FROM system.rangelog ORDER BY timestamp DESC`)
369+
//
370+
// TODO(pav-kv): we have seen this query take a long time and cause the
371+
// test timeout. Use an explicit timeout to fail faster, and remove once
372+
// we get to the bottom of it.
373+
ctx, cancel := context.WithTimeout(ctx, 5*time.Minute)
374+
defer cancel()
375+
infos, err := queryRangeLog(ctx, tc.Conns[0], `SELECT info FROM system.rangelog ORDER BY timestamp DESC`)
370376
require.NoError(t, err)
371377
for _, info := range infos {
372378
if _, ok := trackedRanges[info.UpdatedDesc.RangeID]; !ok || len(info.UpdatedDesc.Replicas().VoterDescriptors()) <= 3 {
@@ -1732,13 +1738,13 @@ func TestReplicateQueueShouldQueueNonVoter(t *testing.T) {
17321738
// queryRangeLog queries the range log. The query must be of type:
17331739
// `SELECT info from system.rangelog ...`.
17341740
func queryRangeLog(
1735-
conn *gosql.DB, query string, args ...interface{},
1741+
ctx context.Context, conn *gosql.DB, query string, args ...interface{},
17361742
) ([]kvserverpb.RangeLogEvent_Info, error) {
17371743

17381744
// The range log can get large and sees unpredictable writes, so run this in a
17391745
// proper txn to avoid spurious retries.
17401746
var events []kvserverpb.RangeLogEvent_Info
1741-
err := crdb.ExecuteTx(context.Background(), conn, nil, func(conn *gosql.Tx) error {
1747+
err := crdb.ExecuteTx(ctx, conn, nil, func(conn *gosql.Tx) error {
17421748
events = nil // reset in case of a retry
17431749

17441750
rows, err := conn.Query(query, args...)
@@ -1775,7 +1781,10 @@ func filterRangeLog(
17751781
eventType kvserverpb.RangeLogEventType,
17761782
reason kvserverpb.RangeLogEventReason,
17771783
) ([]kvserverpb.RangeLogEvent_Info, error) {
1778-
return queryRangeLog(conn, `SELECT info FROM system.rangelog WHERE "rangeID" = $1 AND "eventType" = $2 AND info LIKE concat('%', $3::STRING, '%') ORDER BY timestamp ASC;`, rangeID, eventType.String(), reason)
1784+
return queryRangeLog(context.Background(), conn,
1785+
`SELECT info FROM system.rangelog WHERE "rangeID" = $1 AND "eventType" = $2 AND info LIKE concat('%', $3::STRING, '%') ORDER BY timestamp ASC;`,
1786+
rangeID, eventType.String(), reason,
1787+
)
17791788
}
17801789

17811790
func toggleReplicationQueues(tc *testcluster.TestCluster, active bool) {

0 commit comments

Comments
 (0)