diff options
| author | h0pless <[email protected]> | 2026-03-17 14:31:01 +0300 |
|---|---|---|
| committer | h0pless <[email protected]> | 2026-03-17 15:10:57 +0300 |
| commit | acb3667338d9a0eb1d5bad511e8884b99b08c608 (patch) | |
| tree | ce6104f43ca558f273435f5e058d78c39b65f8d0 /library/cpp/threading/equeue/ut | |
| parent | 22297b289d8cf3dc39f3b2e41f1a821af798969e (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/ut')
0 files changed, 0 insertions, 0 deletions
