<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ydb/yt, 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-06-07T18:00:46Z</updated>
<entry>
<title>Reclaim hazard pointers periodically on idle worker threads</title>
<updated>2026-06-07T18:00:46Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2026-06-07T17:25:31Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=e211f313308ba508d351979d52091dccd44798fe'/>
<id>urn:sha1:e211f313308ba508d351979d52091dccd44798fe</id>
<content type='text'>
Worker threads that park via TNotifyManager::Wait (TThreadPool,
TTwoLevelFairShareThreadPool) could strand hazard-retired objects on an
idle thread: an object still protected at the pre-park reclamation scan
stayed in the thread-local retire list and was never reclaimed while the
thread remained parked, pinning the object (and the memory it transitively
held, e.g. an unmounted tablet's lookup row cache) indefinitely.

Idle workers now reclaim hazard pointers periodically; while any retired
pointers remain pending a worker wakes up at most once per
HazardPointerReclaimPeriod to retry instead of blocking indefinitely. The
throttled per-thread reclamation is unified into a single
ReclaimHazardPointersPeriodically helper shared by TSchedulerThread,
TTwoLevelFairShareQueue and TNotifyManager.
commit_hash:862b70b662e47ca85d55864627e723a8f3feb2f8
</content>
</entry>
<entry>
<title>YT-22593: Migrate IClient StartQuery query param to std::string</title>
<updated>2026-06-07T17:57:52Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2026-06-07T17:25:04Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=c906b7501b1f5f91adc8316e883755aa5ab38dbc'/>
<id>urn:sha1:c906b7501b1f5f91adc8316e883755aa5ab38dbc</id>
<content type='text'>
commit_hash:ebe98a0b25f06f6e5d601531325c66f0112dc23c
</content>
</entry>
<entry>
<title>Intermediate changes</title>
<updated>2026-06-07T17:56:57Z</updated>
<author>
<name>robot-piglet</name>
<email>robot-piglet@yandex-team.com</email>
</author>
<published>2026-06-07T17:24:45Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=1114f4d5d16fe70d6bcd798a9fcc3844a83e88f7'/>
<id>urn:sha1:1114f4d5d16fe70d6bcd798a9fcc3844a83e88f7</id>
<content type='text'>
commit_hash:11ffc36e8c033b5cd0c7d1ebc2989a6559fcf4b3
</content>
</entry>
<entry>
<title>YT-27780: Make push-based shuffle configurable via start_shuffle</title>
<updated>2026-06-07T14:31:59Z</updated>
<author>
<name>apollo1321</name>
<email>apollo1321@yandex-team.com</email>
</author>
<published>2026-06-07T14:05:58Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=3014c231b26aa13f4f00454705af9ba1041b6afe'/>
<id>urn:sha1:3014c231b26aa13f4f00454705af9ba1041b6afe</id>
<content type='text'>
commit_hash:109d7b77afce712c68e57058c5f38e52eade292e
</content>
</entry>
<entry>
<title>Intermediate changes</title>
<updated>2026-06-07T10:07:12Z</updated>
<author>
<name>robot-piglet</name>
<email>robot-piglet@yandex-team.com</email>
</author>
<published>2026-06-07T09:45:03Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=62fc40807071963a5e159369fbb27023f135aadb'/>
<id>urn:sha1:62fc40807071963a5e159369fbb27023f135aadb</id>
<content type='text'>
commit_hash:d5cb132b1cc8a7c199d30cecf74c056e04a86377
</content>
</entry>
<entry>
<title>YT-22593: Reduce TString usage in core/misc</title>
<updated>2026-06-06T22:31:50Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2026-06-06T22:15:06Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=ffc038d5a916cec181915795ca4b45f07ee2ae05'/>
<id>urn:sha1:ffc038d5a916cec181915795ca4b45f07ee2ae05</id>
<content type='text'>
commit_hash:ba8c42476d6274212745348071682042e780037f
</content>
</entry>
<entry>
<title>YT-22593: Migrate IClient admin (core dump, maintenance) method strings to std::string</title>
<updated>2026-06-06T21:53:09Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2026-06-06T21:35:59Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=d1c1aedb88345a776f41cd481415394ad0f4ca60'/>
<id>urn:sha1:d1c1aedb88345a776f41cd481415394ad0f4ca60</id>
<content type='text'>
YT-22593: Migrate IClient admin (core dump, maintenance) method strings to std::string
commit_hash:7fe1737383174203b9883de719f2ec6fc561ed30
</content>
</entry>
<entry>
<title>YT-22593: Migrate IClient file cache method params to std::string</title>
<updated>2026-06-06T21:34:24Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2026-06-06T20:55:29Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=fa15aff561d5197a2f231e8096db43e638d9d033'/>
<id>urn:sha1:fa15aff561d5197a2f231e8096db43e638d9d033</id>
<content type='text'>
YT-22593: Migrate IClient file cache method params to std::string
commit_hash:40ffa51072f5818a0247e2cd071ff7455f0e2d9d
</content>
</entry>
<entry>
<title>YT-22593: Migrate IClient password/token method params to std::string</title>
<updated>2026-06-06T21:19:47Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2026-06-06T20:52:49Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=d496342dde195f723cfa385c5e67a090defba016'/>
<id>urn:sha1:d496342dde195f723cfa385c5e67a090defba016</id>
<content type='text'>
YT-22593: Migrate IClient password/token method params to std::string
commit_hash:96d2e22ff2de310a8441a48aa0973e0cc8a7e752
</content>
</entry>
<entry>
<title>Cache process/thread id getters and use them in TError origin capture</title>
<updated>2026-06-06T21:16:49Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2026-06-06T20:52:00Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=f10c7206fb31af8057446bceef9707aabaa9456e'/>
<id>urn:sha1:f10c7206fb31af8057446bceef9707aabaa9456e</id>
<content type='text'>
## Motivation
Profiling the YT master Automaton thread showed TOriginAttributes::Capture (run on every non-OK TError) spending ~60% of its time in a getpid() syscall — uncached on glibc &gt;= 2.25. NYT::GetCurrentThreadId() (gettid) feeds hot thread-affinity / log-manager checks on the same thread.

## Changes
- New library/cpp/yt/system/process_id.* with cached GetProcessId(); GetSystemThreadId() now caches the kernel tid in TLS. Both caches reset in the child after fork.
- Moved thread_name.{h,cpp} from misc to system.
- Removed GetCurrentProcessId/GetCurrentThreadId shims from yt/yt/core/misc/proc.{h,cpp}; migrated all callers to NYT::GetProcessId / NYT::GetSystemThreadId.
- TOriginAttributes::Capture uses the cached getters; recorded Tid is now the real kernel tid (matches perf/ps).
- Added microbenchmarks (library/cpp/yt/system/benchmarks, yt/yt/core/benchmarks/error.cpp).

## Microbenchmarks (release)
| | before | after |
|---|---|---|
| getpid | 101 ns | 0.33 ns |
| gettid | 102 ns | 1.64 ns |
| Capture | 161 ns | 50 ns |
| failed TError | 221 ns | 74 ns |
commit_hash:ee37ae57d61a5a2dd33daee935270f4bb93b7ff9
</content>
</entry>
</feed>
