| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | |
| |
| |
| | |
commit_hash:da3595c17e930ef69088c3164f42adc50d57f283
|
| | |
| |
| |
| | |
commit_hash:4bc357937e76b2b082671bb0f67ac3012ee4dbca
|
| |\| |
|
| | |
| |
| |
| | |
commit_hash:98d74c7178143299da87aa292913cb4aae1f8319
|
| |\| |
|
| | |
| |
| |
| |
| |
| | |
контент стораджа
commit_hash:6d2d4a8e26a51e0bb83e61c984a5bd59d9063af5
|
| | |
| |
| |
| | |
commit_hash:6240deb03897628c9ee741bdb55fee2408645087
|
| | |
| |
| |
| | |
commit_hash:12e3fbeb26e1668e5fda7922d1a4715215fdfa46
|
| |\| |
|
| | |
| |
| |
| | |
commit_hash:e980344810b3722705b07a3d4366a04b4dba2917
|
| | |
| |
| |
| | |
commit_hash:de05a760fd2f6715da984610e87dc73c258b7096
|
| | |
| |
| |
| | |
commit_hash:24a87198c8fc53da983f9678679b990070e329b8
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
## Проблема
После аварийного завершения агента (SIGKILL) или длительной недоступности C++ клиент Unified Agent не восстанавливал соединение сам. Сессия оставалась в состоянии «активна», сообщения накапливались в буфере (inflight), при достижении лимита начинались потери (dropped messages), и доставка не возобновлялась даже после поднятия агента — требовался перезапуск приложения-клиента.
## Как исправлено
Добавлен механизм «страховки»: если у сессии есть не подтверждённые сообщения (inflight), но по активному gRPC-стриму долго нет никакой активности (ни read, ни write, ни finish), клиент принудительно отменяет текущий вызов и запускает обычный путь реконнекта (повторные попытки установки сессии). «Длительность молчания» задаётся новым параметром; по умолчанию механизм включён (30 с) — зависание сессии никому не нужно, отключить можно явно, выставив таймаут в 0.
{% cut "Технические детали" %}
**Корневая причина:** реконнект планировался только в `OnGrpcCallFinished`, то есть после завершения активного stream-вызова. При «зависшем» транспорте (transport stall после падения агента) gRPC мог не вызывать финальный callback, `ActiveGrpcCall` оставался занятым, и новый `MakeGrpcCall` не запускался.
**Изменения в коде:**
- В `TClientParameters` добавлен параметр `GrpcCallInactivityTimeout` (по умолчанию 30 с; 0 = отключено).
- В сессии заведён периодический watchdog-таймер; при срабатывании проверяется: есть ли активный `TGrpcCall`, есть ли inflight-сообщения и не было ли активности дольше заданного таймаута. При выполнении условий вызывается принудительное закрытие текущего call (`BeginClose(true)`), что приводит к `OnGrpcCallFinished` и планированию следующего `MakeGrpcCall` по `GrpcReconnectDelay`.
- Время последней активности обновляется при любом успешном событии стрима (Accept, Read, Write, Finish, а также при инициализации сессии и при ack).
**Тестирование:** добавлен интеграционный тест `TestReconnectAfterLongStall` (агент поднимается → сессия и первая доставка → убийство агента → отправка во время даунтайма → пауза → повторный запуск агента → проверка, что inflight обнуляется и сессия переинициализируется без рестарта приложения). Регрессии по существующим reconnect-тестам не наблюдаются.
{% endcut %}
commit_hash:f55efec2cff20fa975500e73d60ee57654abb2e0
|
| | |
| |
| |
| | |
commit_hash:1f5f18fdf0f2495984459d943dd860d4ae2c6202
|
| | |
| |
| |
| | |
commit_hash:4821db4ea5b9e016f8c478cb6a7a1ea63b1bc326
|
| | |
| |
| |
| | |
commit_hash:eee25420ad6ea93339717787cd90187d2804df76
|
| | |
| |
| |
| | |
commit_hash:343a4d8f871af0716a506a7b4a806821b6960075
|
| |\| |
|
| | |
| |
| |
| | |
commit_hash:def1549af31025d7b902e3bf92206a03053f5a71
|
| | |
| |
| |
| | |
commit_hash:2c3caf7a2a8655649650230a87041de32d894601
|
| | |
| |
| |
| | |
commit_hash:b314e8a95a2e0b045610b036e73d627d36a862fb
|
| | |
| |
| |
| | |
commit_hash:91ce0e2023d29ef78fadeaded314ea236f316b8e
|
| |\| |
|
| | |
| |
| |
| | |
commit_hash:7bea862660ba289cd58b74fac07d57aa126aa1c1
|
| | |
| |
| |
| | |
commit_hash:515a085472bab89404ad6e51f91be61ac01d9094
|
| |\| |
|
| | |
| |
| |
| | |
commit_hash:02ffad2516143e0c872a0d52eda33561e23e3ec2
|
| | |
| |
| |
| | |
commit_hash:fec2286eb1fd675e7d50f7da7695f393a5b0a5aa
|
| | |
| |
| |
| | |
commit_hash:25c6545fed2bffe20f7a008a218b9245896926ec
|
| | |
| |
| |
| | |
commit_hash:70f4e2c519e189107c5e9dec6ba45eeb58973f46
|
| | |
| |
| |
| | |
commit_hash:7a04b71703a53450dbaa8ec880141545e019a71e
|
| |\| |
|
| | |
| |
| |
| | |
commit_hash:3ffe8eb8d830a76efbd1fad2e6ebda2b140215c7
|
| | |
| |
| |
| | |
commit_hash:6f0226afc878b77a48efdd142971b568aa0bf405
|
| | |
| |
| |
| | |
commit_hash:6b6fb1b60f32209f80d85e4e33889e192a35ac07
|
| |\| |
|
| | |
| |
| |
| | |
commit_hash:c6aef447a589e761372dc7008458b23a60c4d3f6
|
| |\| |
|
| | |
| |
| |
| | |
commit_hash:986e0f49b3f095829d1a8af7f2f88521055e63a1
|
| |\| |
|
| | |
| |
| |
| | |
commit_hash:2ba91e501cb0d1d5f727d7018af5bdc34ebd51f2
|
| |\| |
|
| | |
| |
| |
| | |
commit_hash:ab715a19c7c9819d6130970851b148010f9189bd
|
| |\| |
|
| | |
| |
| |
| | |
commit_hash:6f47ff10b7e4503466c226a6d3df0637a5c14715
|
| |\| |
|
| | |
| |
| |
| | |
commit_hash:2a9ac53b44252aeea5188e821743fc79b064947b
|
| | |
| |
| |
| | |
commit_hash:3b7f35f613737aa92f473877e8b24782f7dfcd2a
|
| |\| |
|
| | |
| |
| |
| | |
commit_hash:520dd74e9a7cc021d91d1f5a2b6db883b21188c5
|