<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ydb/yt/cpp/mapreduce/client/retryful_writer_v2.cpp, branch CLI_2.21.0</title>
<subtitle>Mirror of YDB github repos</subtitle>
<id>https://code.mastervirt.ru/ydb/atom?h=CLI_2.21.0</id>
<link rel='self' href='https://code.mastervirt.ru/ydb/atom?h=CLI_2.21.0'/>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/'/>
<updated>2025-05-20T11:35:08Z</updated>
<entry>
<title>YT-25104: Align new writer behaviour with the oldest ones</title>
<updated>2025-05-20T11:35:08Z</updated>
<author>
<name>hiddenpath</name>
<email>hiddenpath@yandex-team.com</email>
</author>
<published>2025-05-20T11:17:53Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=e15614086c8fe0f9fc9d5a7618cf815c248f6b1b'/>
<id>urn:sha1:e15614086c8fe0f9fc9d5a7618cf815c248f6b1b</id>
<content type='text'>
commit_hash:a33872f7bf427339504d82c86c97504eb38757d9
</content>
</entry>
<entry>
<title>YT-23616: Move RequestWithRetry to common</title>
<updated>2025-02-08T17:40:43Z</updated>
<author>
<name>hiddenpath</name>
<email>hiddenpath@yandex-team.com</email>
</author>
<published>2025-02-08T17:19:21Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=d2703b22bd88ed7b99b83327594ef7cc3dc27f88'/>
<id>urn:sha1:d2703b22bd88ed7b99b83327594ef7cc3dc27f88</id>
<content type='text'>
commit_hash:d85d90291b5eb4cf0c68c9c1c2387124cb9927b2
</content>
</entry>
<entry>
<title>YT-23616: Rename raw_client to http_client</title>
<updated>2025-01-22T06:04:11Z</updated>
<author>
<name>hiddenpath</name>
<email>hiddenpath@yandex-team.com</email>
</author>
<published>2025-01-22T05:47:22Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=044fc00c5520ec73b6146427ce9f1cf80ec6a95f'/>
<id>urn:sha1:044fc00c5520ec73b6146427ce9f1cf80ec6a95f</id>
<content type='text'>
commit_hash:df330f3a0c0ca36d9bcf801fd96b964f1be6383a
</content>
</entry>
<entry>
<title>Migrate THolder to std::unique_ptr in yt/cpp/mapreduce internals</title>
<updated>2024-12-24T18:37:04Z</updated>
<author>
<name>hiddenpath</name>
<email>hiddenpath@yandex-team.com</email>
</author>
<published>2024-12-24T17:33:51Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=5316c104d58281584317972b3b4a1fc19dbbef45'/>
<id>urn:sha1:5316c104d58281584317972b3b4a1fc19dbbef45</id>
<content type='text'>
commit_hash:99bfa41ffc42ed3622660b15d7ce68802e53f902
</content>
</entry>
<entry>
<title>[yt/cpp/mapreduce] YT-23616: Move rest of Cypress methods to THttpRawClient</title>
<updated>2024-12-15T19:19:07Z</updated>
<author>
<name>hiddenpath</name>
<email>hiddenpath@yandex-team.com</email>
</author>
<published>2024-12-15T18:57:17Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=17c15e9fcc5070dd6af154f065e21174c4c9ba85'/>
<id>urn:sha1:17c15e9fcc5070dd6af154f065e21174c4c9ba85</id>
<content type='text'>
commit_hash:2d705aa0369f1425152547803e0fcf80780e1bf6
</content>
</entry>
<entry>
<title>yt/cpp/mapreduce: move Get, TryGet, Exists, MultisetAttributes to THttpRawClient</title>
<updated>2024-12-13T14:04:18Z</updated>
<author>
<name>hiddenpath</name>
<email>hiddenpath@yandex-team.com</email>
</author>
<published>2024-12-13T12:22:36Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=09c88b035d29fac5fd49de2fbc3c71e2d2a80754'/>
<id>urn:sha1:09c88b035d29fac5fd49de2fbc3c71e2d2a80754</id>
<content type='text'>
commit_hash:bd2228f98fa92de408ca850f9bc1608fdf99e7f5
</content>
</entry>
<entry>
<title>Fix more problems with RetryfulWriterV2</title>
<updated>2024-04-17T06:45:11Z</updated>
<author>
<name>ermolovd</name>
<email>ermolovd@yandex-team.com</email>
</author>
<published>2024-04-17T06:35:35Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=78f427d10a1aa4f27b0b4eff5a510a214a5a93a2'/>
<id>urn:sha1:78f427d10a1aa4f27b0b4eff5a510a214a5a93a2</id>
<content type='text'>
404e999bcffb20d5497161a98f48f566b5245704
</content>
</entry>
<entry>
<title>BufferMemory usage for retryful writer v2</title>
<updated>2024-04-12T21:43:22Z</updated>
<author>
<name>ermolovd</name>
<email>ermolovd@yandex-team.com</email>
</author>
<published>2024-04-12T18:38:02Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=68bc6e97593f4c41266b2ddca54eff8d23416fee'/>
<id>urn:sha1:68bc6e97593f4c41266b2ddca54eff8d23416fee</id>
<content type='text'>
ca66c0e73475f3596f6fb2e4e655f2ec378a71a9
</content>
</entry>
<entry>
<title>Fix crash in retryful writer v2</title>
<updated>2024-04-11T22:37:07Z</updated>
<author>
<name>ermolovd</name>
<email>ermolovd@yandex-team.com</email>
</author>
<published>2024-04-11T22:27:33Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=174505ce5cdff80adfba073dc3ee3528c7f0c94a'/>
<id>urn:sha1:174505ce5cdff80adfba073dc3ee3528c7f0c94a</id>
<content type='text'>
d95cdb95b36efff7cbf942996a10ee4ff755bbfc
</content>
</entry>
<entry>
<title>Support building yt/cpp and yt/yt/core with vanilla protobuf</title>
<updated>2024-03-19T11:16:23Z</updated>
<author>
<name>Grigory Reznikov</name>
<email>gritukan@nebius.com</email>
</author>
<published>2024-03-19T10:38:52Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=51c750cf25c79121b833e2a7882b10e8cd371bef'/>
<id>urn:sha1:51c750cf25c79121b833e2a7882b10e8cd371bef</id>
<content type='text'>
After this PR yt/cpp and yt/yt/core are possible to be built both with Arcadia protobuf (that uses TString as a string) and vanilla protobuf (that uses std::string as a string). To achieve so, a couple of interoperability primitives are introduced.

* `TProtobufString` is an alias to protobuf string type, i.e. it can be `TString` or `std::string` depending on the protobuf implementation.
* `IsVanillaProtobuf` and `IsArcadiaProtobuf` are the constexpr boolean values that allow to check protobuf implementation both in the compile time and runtime.

The most challenging interoperability issue solved here is a string copy between protobuf message and C++ code that has a form of `TString str = msg.str()`. This code works perfect with Arcadia protobuf but does not work with vanilla protobuf. To solve it, a previously introduced primitive `FromProto&lt;TString&gt;` is used. This expression makes the most efficient cast possible between protobuf string and C++ string. Internally, it is just a copy in both cases. Since TString is CoW by default, this expression is almost zero-cost (actually it's just one atomic operation), so no degradation is expected for YTsaurus server builds. The most hot code is handled differently to avoid even atomic operations (see `GetRequestTargetYPath`). In case of vanilla protobuf string is copied, however there are no places in C++ SDK where it might be a problem. If such issues would appear, performance-critial code can be rewritten in `GetRequestTargetYPath`-style.

---
1a6f3e02cb6e83915102c24b73bc8734f6a48e74

Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/466
</content>
</entry>
</feed>
