<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ydb/library/cpp, branch main</title>
<subtitle>Mirror of YDB github repos</subtitle>
<id>https://code.mastervirt.ru/ydb/atom?h=main</id>
<link rel='self' href='https://code.mastervirt.ru/ydb/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/'/>
<updated>2026-07-25T08:33:05Z</updated>
<entry>
<title>YT-28451: Migrate library/cpp/yt consumers to YT_TLOG_* API</title>
<updated>2026-07-25T08:33:05Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2026-07-25T08:11:45Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=fb24da1929620acd460b93c037f189ec4549a28b'/>
<id>urn:sha1:fb24da1929620acd460b93c037f189ec4549a28b</id>
<content type='text'>
commit_hash:6ab9c84d85a668a8047593f61b5c9e1a7be60377
</content>
</entry>
<entry>
<title>New version of the tld SKIP_CHECK SKIP_REVIEW</title>
<updated>2026-07-25T00:44:22Z</updated>
<author>
<name>robot-ratatosk</name>
<email>robot-ratatosk@yandex-team.com</email>
</author>
<published>2026-07-24T23:38:53Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=375066c3cc1d0edcd632c6556726376440b363da'/>
<id>urn:sha1:375066c3cc1d0edcd632c6556726376440b363da</id>
<content type='text'>
commit_hash:0a10662cb824dede898d600662723224e893c38b
</content>
</entry>
<entry>
<title>YT-28451: Fix -Wdangling-else in YT_TLOG_*_IF / _UNLESS macros</title>
<updated>2026-07-24T10:57:25Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2026-07-24T09:48:00Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=61673138306d0a6f7945de22d0876d6d0e405d2d'/>
<id>urn:sha1:61673138306d0a6f7945de22d0876d6d0e405d2d</id>
<content type='text'>
commit_hash:ebf99d345c17fbfedf78ef06424c615c900689f9
</content>
</entry>
<entry>
<title>Intermediate changes</title>
<updated>2026-07-22T14:56:37Z</updated>
<author>
<name>robot-piglet</name>
<email>robot-piglet@yandex-team.com</email>
</author>
<published>2026-07-22T13:22:33Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=ef41a76254f071ceffbc41003f485fc7504dd164'/>
<id>urn:sha1:ef41a76254f071ceffbc41003f485fc7504dd164</id>
<content type='text'>
commit_hash:8521bae955ae15bf7265f8bb58ebe126a62841ea
</content>
</entry>
<entry>
<title>add methods ForEach() and ForEachReverse() to TPagedVector for fast iteration over elements</title>
<updated>2026-07-21T15:07:53Z</updated>
<author>
<name>tobo</name>
<email>tobo@yandex-team.com</email>
</author>
<published>2026-07-21T14:03:46Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=7c315681e7b727ddfbcff15e438d2fb040996d28'/>
<id>urn:sha1:7c315681e7b727ddfbcff15e438d2fb040996d28</id>
<content type='text'>
commit_hash:3cde1a78c5f1af49a50168bbc85c6f9a8f28ad73
</content>
</entry>
<entry>
<title>Make THROW_ERROR_EXCEPTION_UNLESS/IF chainable with error attributes</title>
<updated>2026-07-21T06:52:42Z</updated>
<author>
<name>pechatnov</name>
<email>pechatnov@yandex-team.com</email>
</author>
<published>2026-07-21T06:21:36Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=b6bda2264da6775be09d9224c82c5b9587e60052'/>
<id>urn:sha1:b6bda2264da6775be09d9224c82c5b9587e60052</id>
<content type='text'>
commit_hash:4e76ece0b75ab787ed04b6be5f183cecbf9b8167
</content>
</entry>
<entry>
<title>fix fork deadlock</title>
<updated>2026-07-20T16:12:08Z</updated>
<author>
<name>mixx239</name>
<email>mixx239@yandex-team.com</email>
</author>
<published>2026-07-20T15:41:43Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=7a9820fea09300733ed584f4851707a5c5987689'/>
<id>urn:sha1:7a9820fea09300733ed584f4851707a5c5987689</id>
<content type='text'>
Python-клиент (обертка над С\+\+ клиентом) UA с fork support виснет в `fork()` (\&gt;50%): `TClientSession::CheckGrpcCallInactivity` (inactivity-watchdog на потоке gRPC completion-queue) брал сессионный лок `with_lock` не проверив что не идет форк. Пока pthread_atfork-обработчик `TClient::PreFork` держит этот лок в `WaitAll()`, поллер застревает на CheckGrpcCallInactivity -\&gt; сессия не закрывается -\&gt; `fork()` не завершается.

Фикс: `CheckGrpcCallInactivity` захватывает лок `TryAcquire` \+ выход по `ForkInProgress` - как уже делает `Poll()`
commit_hash:79b1f727d8ecc9b54e386b586f4f49bf1d6512d8
</content>
</entry>
<entry>
<title>Make Ascii-related functions and StripString() constexpr</title>
<updated>2026-07-17T19:23:20Z</updated>
<author>
<name>thegeorg</name>
<email>thegeorg@yandex-team.com</email>
</author>
<published>2026-07-17T17:02:10Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=4a3634c81d134200825ad9db61bc73962b398fbd'/>
<id>urn:sha1:4a3634c81d134200825ad9db61bc73962b398fbd</id>
<content type='text'>
commit_hash:ff7ca9a2428930638288f8c0e92a303b8f620063
</content>
</entry>
<entry>
<title>Unpoison use-after-dtor access to ref counter</title>
<updated>2026-07-17T10:21:08Z</updated>
<author>
<name>makxenov</name>
<email>makxenov@yandex-team.com</email>
</author>
<published>2026-07-16T17:48:23Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=bcb14ace638c50d3f0530f65ce3e9ad1e7b3d361'/>
<id>urn:sha1:bcb14ace638c50d3f0530f65ce3e9ad1e7b3d361</id>
<content type='text'>
Two scenarios addressed:

- Access to ref counters after explicit destructor of an object
- Access to vptr for upcast of an already destroyed object
commit_hash:a8f27500111817f325832d006feb3ce6c3c830f1
</content>
</entry>
<entry>
<title>YT-28451: Add tagged logging API and opaque event payload</title>
<updated>2026-07-17T09:07:46Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2026-07-16T07:32:17Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=cc4f0cb52cee106a1e84c653823087861b8c8df5'/>
<id>urn:sha1:cc4f0cb52cee106a1e84c653823087861b8c8df5</id>
<content type='text'>
Replace `TLogEvent::MessageRef` with an opaque `Payload` that carries the message
together with structured key/value tags, deferring tag rendering to the consumer
(logging thread).

- Add the `TTaggedPayloadWriter`/`TTaggedPayloadReader` codec (`NDetail`), with a
  per-thread chunk-cached builder so tagged logging does no per-message heap
  allocation.
- Model the payload as a typed `TLogEventPayload` — a `std::variant` of the opaque
  strong typedefs `TTaggedLogEventPayload` and `TStructuredLogEventPayload` (each
  over `TSharedRef`). The active alternative identifies the event kind, so the
  separate `ELogMessageKind` enum and `TLogEvent::MessageKind` field are removed;
  consumers dispatch via `std::holds_alternative`/`std::get` instead of a tag.
- Add the fluent `YT_TLOG_*` API: `YT_TLOG_INFO("Message").With(key, value)` and
  `.With(key, value, "%spec")`; disabled levels skip argument evaluation.
- Add well-known tags: `.With(value)` attaches a value under a statically known
  key resolved by ADL (e.g. `.With(error)` for the `Error` tag).
- Teach the plain-text and structured formatters to render tags; add the
  `enable_native_tags` knob to emit tags into a nested structured attribute.
- Add producer-side benchmarks. The tagged API is cheaper than `YT_LOG_*` for
  tagged calls and on par for tag-free ones:

#|
|| **Producer call** | **`YT_LOG_*`** | **`YT_TLOG_*`** | **Δ** ||
|| no tags   | 81 ns  | 82 ns  | +2%  ||
|| 1 tag     | 124 ns | 88 ns  | -29% ||
|| 2 tags    | 140 ns | 101 ns | -28% ||
|| 3 tags    | 372 ns | 283 ns | -24% ||
|#

--

#| || **&lt;a href="https://nda.ya.ru/t/p0sVNSOC7ijzFF" target="_blank"&gt;![](https://nda.ya.ru/t/mAiQIjHx7Mm3JC =30x) Echo tests&lt;/a&gt;** || |#
commit_hash:70efc90e5c2b71e5311415a4e4508db42ff28971
</content>
</entry>
</feed>
