aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorshakurov <shakurov@yandex-team.com>2023-09-20 13:16:24 +0300
committershakurov <shakurov@yandex-team.com>2023-09-20 14:21:22 +0300
commit48ad4a607d0da4ead79c2b44ac45b64a4e67911a (patch)
tree98acf6ecc0313131d10861d8990d688f7eb5dea8
parent85d8b03e2d1f8527952a3dde8f9cb561424358b0 (diff)
downloadydb-48ad4a607d0da4ead79c2b44ac45b64a4e67911a.tar.gz
YT-20015: Fix leaking request processing callbacks in TRequestQueue::ScheduleRequestsFromQueue.
-rw-r--r--yt/yt/core/rpc/service_detail.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/yt/yt/core/rpc/service_detail.cpp b/yt/yt/core/rpc/service_detail.cpp
index 54b62e43f91..a7420b8f31a 100644
--- a/yt/yt/core/rpc/service_detail.cpp
+++ b/yt/yt/core/rpc/service_detail.cpp
@@ -1299,12 +1299,16 @@ void TRequestQueue::ScheduleRequestsFromQueue()
while (QueueSize_.load() > 0 && Concurrency_.load() < concurrencyLimit) {
if (AreThrottlersOverdrafted()) {
SubscribeToThrottlers();
- break;
+ return;
}
TServiceBase::TServiceContextPtr context;
- if (!Queue_.try_dequeue(context)) {
- break;
+ while (!Queue_.try_dequeue(context)) {
+ // False negatives are possible in Moody Camel.
+ if (QueueSize_.load() > 0) {
+ continue;
+ }
+ return;
}
DecrementQueueSize();