@@ -222,6 +222,11 @@ func TestBaseQueueAddUpdateAndRemove(t *testing.T) {
222
222
} else {
223
223
bq .finishProcessingReplica (ctx , stopper , r2 , nil )
224
224
}
225
+ bq .assertInvariants (func (item * replicaItem ) {
226
+ replica , err := bq .getReplica (item .rangeID )
227
+ require .NoError (t , err )
228
+ require .Equal (t , priorityMap [replica .(* Replica )], item .priority )
229
+ })
225
230
if v := bq .pending .Value (); v != 1 {
226
231
t .Errorf ("expected 1 pending replicas; got %d" , v )
227
232
}
@@ -294,6 +299,11 @@ func TestBaseQueueAddUpdateAndRemove(t *testing.T) {
294
299
if r , _ := bq .pop (); r != nil {
295
300
t .Errorf ("expected empty queue; got %v" , r )
296
301
}
302
+ bq .assertInvariants (func (item * replicaItem ) {
303
+ replica , err := bq .getReplica (item .rangeID )
304
+ require .NoError (t , err )
305
+ require .Equal (t , priorityMap [replica .(* Replica )], item .priority )
306
+ })
297
307
298
308
// Try removing a replica.
299
309
bq .maybeAdd (ctx , r1 , hlc.ClockTimestamp {})
@@ -313,6 +323,11 @@ func TestBaseQueueAddUpdateAndRemove(t *testing.T) {
313
323
if v := bq .pending .Value (); v != 0 {
314
324
t .Errorf ("expected 0 pending replicas; got %d" , v )
315
325
}
326
+ bq .assertInvariants (func (item * replicaItem ) {
327
+ replica , err := bq .getReplica (item .rangeID )
328
+ require .NoError (t , err )
329
+ require .Equal (t , priorityMap [replica .(* Replica )], item .priority )
330
+ })
316
331
}
317
332
318
333
// TestBaseQueueSamePriorityFIFO verifies that if multiple items are queued at
@@ -538,19 +553,27 @@ func TestBaseQueueAddRemove(t *testing.T) {
538
553
t .Fatal (err )
539
554
}
540
555
556
+ const testPriority = 1.0
541
557
testQueue := & testQueueImpl {
542
558
blocker : make (chan struct {}, 1 ),
543
559
shouldQueueFn : func (now hlc.ClockTimestamp , r * Replica ) (shouldQueue bool , priority float64 ) {
544
560
shouldQueue = true
545
- priority = 1.0
561
+ priority = testPriority
546
562
return
547
563
},
548
564
}
549
565
bq := makeTestBaseQueue ("test" , testQueue , tc .store , queueConfig {maxSize : 2 })
550
566
bq .Start (stopper )
551
567
552
568
bq .maybeAdd (ctx , r , hlc.ClockTimestamp {})
569
+ bq .assertInvariants (func (item * replicaItem ) {
570
+ require .Equal (t , testPriority , item .priority )
571
+ })
572
+
553
573
bq .MaybeRemove (r .RangeID )
574
+ bq .assertInvariants (func (item * replicaItem ) {
575
+ require .Equal (t , testPriority , item .priority )
576
+ })
554
577
555
578
// Wake the queue
556
579
close (testQueue .blocker )
@@ -837,10 +860,19 @@ func TestBaseQueuePurgatory(t *testing.T) {
837
860
bq .maybeAdd (context .Background (), r , hlc.ClockTimestamp {})
838
861
}
839
862
863
+ // Make sure priority is preserved during processing.
864
+ bq .assertInvariants (func (item * replicaItem ) {
865
+ require .Equal (t , float64 (item .rangeID ), item .priority )
866
+ })
867
+
840
868
testutils .SucceedsSoon (t , func () error {
841
869
if pc := testQueue .getProcessed (); pc != replicaCount {
842
870
return errors .Errorf ("expected %d processed replicas; got %d" , replicaCount , pc )
843
871
}
872
+ // Make sure priorities are preserved with the purgatory queue.
873
+ bq .assertInvariants (func (item * replicaItem ) {
874
+ require .Equal (t , float64 (item .rangeID ), item .priority )
875
+ })
844
876
// We have to loop checking the following conditions because the increment
845
877
// of testQueue.processed does not happen atomically with the replica being
846
878
// placed in purgatory.
@@ -852,6 +884,9 @@ func TestBaseQueuePurgatory(t *testing.T) {
852
884
if l := bq .Length (); l != 0 {
853
885
return errors .Errorf ("expected empty priorityQ; got %d" , l )
854
886
}
887
+ bq .assertInvariants (func (item * replicaItem ) {
888
+ require .Equal (t , float64 (item .rangeID ), item .priority )
889
+ })
855
890
// Check metrics.
856
891
if v := bq .successes .Count (); v != 0 {
857
892
return errors .Errorf ("expected 0 processed replicas; got %d" , v )
@@ -886,6 +921,9 @@ func TestBaseQueuePurgatory(t *testing.T) {
886
921
if l := bq .Length (); l != 0 {
887
922
return errors .Errorf ("expected empty priorityQ; got %d" , l )
888
923
}
924
+ bq .assertInvariants (func (item * replicaItem ) {
925
+ require .Equal (t , float64 (item .rangeID ), item .priority )
926
+ })
889
927
// Check metrics.
890
928
if v := bq .successes .Count (); v != 0 {
891
929
return errors .Errorf ("expected 0 processed replicas; got %d" , v )
@@ -918,6 +956,9 @@ func TestBaseQueuePurgatory(t *testing.T) {
918
956
if pc := testQueue .getProcessed (); pc != replicaCount * 3 - rmReplCount {
919
957
return errors .Errorf ("expected %d processed replicas; got %d" , replicaCount * 3 - rmReplCount , pc )
920
958
}
959
+ bq .assertInvariants (func (item * replicaItem ) {
960
+ require .Equal (t , float64 (item .rangeID ), item .priority )
961
+ })
921
962
// Check metrics.
922
963
if v := bq .successes .Count (); v != int64 (replicaCount )- rmReplCount {
923
964
return errors .Errorf ("expected %d processed replicas; got %d" , replicaCount - rmReplCount , v )
@@ -961,6 +1002,9 @@ func TestBaseQueuePurgatory(t *testing.T) {
961
1002
if pc := testQueue .getProcessed (); pc != beforeProcessCount + 1 {
962
1003
return errors .Errorf ("expected %d processed replicas; got %d" , beforeProcessCount + 1 , pc )
963
1004
}
1005
+ bq .assertInvariants (func (item * replicaItem ) {
1006
+ require .Equal (t , float64 (item .rangeID ), item .priority )
1007
+ })
964
1008
if v := bq .successes .Count (); v != beforeSuccessCount + 1 {
965
1009
return errors .Errorf ("expected %d processed replicas; got %d" , beforeSuccessCount + 1 , v )
966
1010
}
@@ -1365,11 +1409,12 @@ func TestBaseQueueProcessConcurrently(t *testing.T) {
1365
1409
repls := createReplicas (t , & tc , 3 )
1366
1410
r1 , r2 , r3 := repls [0 ], repls [1 ], repls [2 ]
1367
1411
1412
+ const testPriority = 1
1368
1413
pQueue := & parallelQueueImpl {
1369
1414
testQueueImpl : testQueueImpl {
1370
1415
blocker : make (chan struct {}, 1 ),
1371
1416
shouldQueueFn : func (now hlc.ClockTimestamp , r * Replica ) (shouldQueue bool , priority float64 ) {
1372
- return true , 1
1417
+ return true , testPriority
1373
1418
},
1374
1419
},
1375
1420
processBlocker : make (chan struct {}, 1 ),
@@ -1414,6 +1459,9 @@ func TestBaseQueueProcessConcurrently(t *testing.T) {
1414
1459
1415
1460
pQueue .processBlocker <- struct {}{}
1416
1461
assertProcessedAndProcessing (3 , 0 )
1462
+ bq .assertInvariants (func (item * replicaItem ) {
1463
+ require .Equal (t , float64 (testPriority ), item .priority )
1464
+ })
1417
1465
}
1418
1466
1419
1467
// TestBaseQueueReplicaChange ensures that if a replica is added to the queue
0 commit comments