<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ydb/library/cpp, branch CLI_2.31.0</title>
<subtitle>Mirror of YDB github repos</subtitle>
<id>https://code.mastervirt.ru/ydb/atom?h=CLI_2.31.0</id>
<link rel='self' href='https://code.mastervirt.ru/ydb/atom?h=CLI_2.31.0'/>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/'/>
<updated>2026-04-16T00:35:19Z</updated>
<entry>
<title>New version of the tld SKIP_CHECK SKIP_REVIEW</title>
<updated>2026-04-16T00:35:19Z</updated>
<author>
<name>robot-ratatosk</name>
<email>robot-ratatosk@yandex-team.com</email>
</author>
<published>2026-04-16T00:02:14Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=ceb2838916d83821b4805953a4f5f53ee66cec67'/>
<id>urn:sha1:ceb2838916d83821b4805953a4f5f53ee66cec67</id>
<content type='text'>
commit_hash:98d74c7178143299da87aa292913cb4aae1f8319
</content>
</entry>
<entry>
<title>лру кеши для сервиса стримов офер сорса и контент стораджа</title>
<updated>2026-04-14T16:44:36Z</updated>
<author>
<name>ibratchik</name>
<email>ibratchik@yandex-team.com</email>
</author>
<published>2026-04-14T16:21:08Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=9a6dd8350e8177e081dba8c1a9a70550fb02662c'/>
<id>urn:sha1:9a6dd8350e8177e081dba8c1a9a70550fb02662c</id>
<content type='text'>
commit_hash:6d2d4a8e26a51e0bb83e61c984a5bd59d9063af5
</content>
</entry>
<entry>
<title>Intermediate changes</title>
<updated>2026-04-14T11:00:09Z</updated>
<author>
<name>robot-piglet</name>
<email>robot-piglet@yandex-team.com</email>
</author>
<published>2026-04-14T10:21:50Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=91926c23d3a7aef30d1c0a12c17e9d76a8dd4fc8'/>
<id>urn:sha1:91926c23d3a7aef30d1c0a12c17e9d76a8dd4fc8</id>
<content type='text'>
commit_hash:6240deb03897628c9ee741bdb55fee2408645087
</content>
</entry>
<entry>
<title>Intermediate changes</title>
<updated>2026-04-14T03:17:37Z</updated>
<author>
<name>robot-piglet</name>
<email>robot-piglet@yandex-team.com</email>
</author>
<published>2026-04-14T02:59:28Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=314e3f0b79e10f32939c45d689f20ae0db4f5641'/>
<id>urn:sha1:314e3f0b79e10f32939c45d689f20ae0db4f5641</id>
<content type='text'>
commit_hash:12e3fbeb26e1668e5fda7922d1a4715215fdfa46
</content>
</entry>
<entry>
<title>Intermediate changes</title>
<updated>2026-04-13T16:39:21Z</updated>
<author>
<name>robot-piglet</name>
<email>robot-piglet@yandex-team.com</email>
</author>
<published>2026-04-13T15:57:33Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=4d078403e82845051497390d991d19bcaa8f86bf'/>
<id>urn:sha1:4d078403e82845051497390d991d19bcaa8f86bf</id>
<content type='text'>
commit_hash:e980344810b3722705b07a3d4366a04b4dba2917
</content>
</entry>
<entry>
<title>New version of the tld SKIP_CHECK SKIP_REVIEW</title>
<updated>2026-04-12T23:56:32Z</updated>
<author>
<name>robot-ratatosk</name>
<email>robot-ratatosk@yandex-team.com</email>
</author>
<published>2026-04-12T23:39:22Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=5b233b88b90c5f833479dd46c365ed120e7dbebd'/>
<id>urn:sha1:5b233b88b90c5f833479dd46c365ed120e7dbebd</id>
<content type='text'>
commit_hash:de05a760fd2f6715da984610e87dc73c258b7096
</content>
</entry>
<entry>
<title>YT-27910: Make some more fields in TServiceContext atomic</title>
<updated>2026-04-12T11:03:33Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2026-04-12T10:31:27Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=2f678ac94fa0e9aeffde6130e9015786e7ea4ed3'/>
<id>urn:sha1:2f678ac94fa0e9aeffde6130e9015786e7ea4ed3</id>
<content type='text'>
commit_hash:24a87198c8fc53da983f9678679b990070e329b8
</content>
</entry>
<entry>
<title>C++ client reconnect after agent SIGKILL/long outage</title>
<updated>2026-04-10T10:30:47Z</updated>
<author>
<name>andybg</name>
<email>andybg@yandex-team.com</email>
</author>
<published>2026-04-10T10:11:09Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=e65fc92c9d31ea9ffa49c59fea807c0f0b2c92fd'/>
<id>urn:sha1:e65fc92c9d31ea9ffa49c59fea807c0f0b2c92fd</id>
<content type='text'>
## Проблема

После аварийного завершения агента (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
</content>
</entry>
<entry>
<title>Intermediate changes</title>
<updated>2026-04-10T10:19:48Z</updated>
<author>
<name>robot-piglet</name>
<email>robot-piglet@yandex-team.com</email>
</author>
<published>2026-04-10T09:58:27Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=a589fd4b7b19674aad82ba4969967be61ff6ad03'/>
<id>urn:sha1:a589fd4b7b19674aad82ba4969967be61ff6ad03</id>
<content type='text'>
commit_hash:1f5f18fdf0f2495984459d943dd860d4ae2c6202
</content>
</entry>
<entry>
<title>typed timestamp</title>
<updated>2026-04-10T06:58:15Z</updated>
<author>
<name>ilnurkh</name>
<email>ilnurkh@yandex-team.com</email>
</author>
<published>2026-04-10T06:23:37Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=460d0e3e8e47506d930befdac11161a613482765'/>
<id>urn:sha1:460d0e3e8e47506d930befdac11161a613482765</id>
<content type='text'>
commit_hash:4821db4ea5b9e016f8c478cb6a7a1ea63b1bc326
</content>
</entry>
</feed>
