Skip to content

Commit 1e3cefe

Browse files
committed
kvstreamer: add more assertions to RequestsProvider.enqueue
If we ever enqueue zero-length requests, it could cause a deadlock where the `workerCoordinator` is waiting for more requests and the enqueuer is waiting for results. Add assertions that we never do this. Release note: None
1 parent 67e16cb commit 1e3cefe

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

pkg/kv/kvclient/kvstreamer/requests_provider.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,9 @@ func (p *outOfOrderRequestsProvider) enqueue(requests []singleRangeBatch) {
264264
if len(p.requests) > 0 {
265265
panic(errors.AssertionFailedf("outOfOrderRequestsProvider has old requests in enqueue"))
266266
}
267+
if len(requests) == 0 {
268+
panic(errors.AssertionFailedf("outOfOrderRequestsProvider enqueuing zero requests"))
269+
}
267270
p.requests = requests
268271
p.hasWork.Signal()
269272
}
@@ -388,6 +391,9 @@ func (p *inOrderRequestsProvider) enqueue(requests []singleRangeBatch) {
388391
if len(p.requests) > 0 {
389392
panic(errors.AssertionFailedf("inOrderRequestsProvider has old requests in enqueue"))
390393
}
394+
if len(requests) == 0 {
395+
panic(errors.AssertionFailedf("inOrderRequestsProvider enqueuing zero requests"))
396+
}
391397
p.requests = requests
392398
p.heapInit()
393399
p.hasWork.Signal()

0 commit comments

Comments
 (0)