summaryrefslogtreecommitdiffstats
path: root/library/cpp/threading/equeue
diff options
context:
space:
mode:
authorh0pless <[email protected]>2026-03-17 14:31:01 +0300
committerh0pless <[email protected]>2026-03-17 15:10:57 +0300
commitacb3667338d9a0eb1d5bad511e8884b99b08c608 (patch)
treece6104f43ca558f273435f5e058d78c39b65f8d0 /library/cpp/threading/equeue
parent22297b289d8cf3dc39f3b2e41f1a821af798969e (diff)
Fix throttling using default limits instead of per-user limits is rare cases
There was a bug, let's simulate it step-by-step: 1. Chunk service is initialized and started. This means that default limits for throttlers are known. (Note that Hydra is not ready yet). 2. A request arrives, it becomes authenticated, proceeds to `HandleAuthenticatedRequest`. Here we choose which request queue it should be put in (`GetRequestQueue`). 3. The queue is chosen correctly and is attempting to be reconfigured with ReconfigureQueue. Long story short, a callback created by `CreateReconfigurationCallback` is called. 4. Here's the catch: the Hydra is still not active, but the callback is attempting to be invoked in the automaton invoker - `GetGuardedAutomatonInvoker(EAutomatonThreadQueue::ChunkService)`. Unfortunately before Hydra is fully active the invoker is not set up properly, which leads to a drop of a callback. (See `TDecoratedAutomaton::TGuardedUserInvoker`, `Invoke`). 5. Now the queue considers itself to be "reconfigured" while in reality it is default-initialized. This PR should fix it. commit_hash:5b9abfd2bfbce0fc668339d8981e66f77909b887
Diffstat (limited to 'library/cpp/threading/equeue')
0 files changed, 0 insertions, 0 deletions