<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ydb/library/cpp/yt/error, branch CLI_2.22.0</title>
<subtitle>Mirror of YDB github repos</subtitle>
<id>https://code.mastervirt.ru/ydb/atom?h=CLI_2.22.0</id>
<link rel='self' href='https://code.mastervirt.ru/ydb/atom?h=CLI_2.22.0'/>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/'/>
<updated>2025-05-06T08:37:45Z</updated>
<entry>
<title>YT: Fix enricher, add from backtrace enricher</title>
<updated>2025-05-06T08:37:45Z</updated>
<author>
<name>pechatnov</name>
<email>pechatnov@yandex-team.com</email>
</author>
<published>2025-05-06T08:09:14Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=fa10d601265343a64d9d5b7b32eb133010b24127'/>
<id>urn:sha1:fa10d601265343a64d9d5b7b32eb133010b24127</id>
<content type='text'>
From backtrace enricher можно использовать для захвата бектрейсов при создании ошибок из исключений, а так же для перекладывания атрибутов из сложных исключений других библиотек.
commit_hash:76711bd3bb7dbc1e41e43f80d43340d2ce8e4df7
</content>
</entry>
<entry>
<title>Add new macro to replace some of the YT_VERIFYs</title>
<updated>2025-04-23T11:58:02Z</updated>
<author>
<name>h0pless</name>
<email>h0pless@yandex-team.com</email>
</author>
<published>2025-04-23T11:34:57Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=f3f3e173acccdd58c3b3932acaf9319f0511531f'/>
<id>urn:sha1:f3f3e173acccdd58c3b3932acaf9319f0511531f</id>
<content type='text'>
commit_hash:f4f2e8b9ba31109593c94251f64e1061f00af304
</content>
</entry>
<entry>
<title>YT: Add type name of std::exception to error text in TError constructor</title>
<updated>2025-04-01T12:13:05Z</updated>
<author>
<name>pechatnov</name>
<email>pechatnov@yandex-team.com</email>
</author>
<published>2025-04-01T11:51:45Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=15459267fcda53b29241b23b6fe98b1134986b53'/>
<id>urn:sha1:15459267fcda53b29241b23b6fe98b1134986b53</id>
<content type='text'>
Без этого, исключение о выходе за пределы массива в векторе выглядит так:

```
vector
    origin           (pid 178121, thread library-cpp-yt-)
    datetime        2025-03-31T14:59:49.069209Z
```

С фиксом:
```
vector
    origin           (pid 178121, thread library-cpp-yt-)
    datetime        2025-03-31T14:59:49.069209Z
    exception_type  std::out_of_range
```
commit_hash:7382eba16208f6847d581b901a7df4dfa39452b0
</content>
</entry>
<entry>
<title>YTORM-1292 Error enrichment via dependency injection</title>
<updated>2025-02-28T12:57:40Z</updated>
<author>
<name>deep</name>
<email>deep@yandex-team.com</email>
</author>
<published>2025-02-28T11:48:56Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=680ad352dc598780b4945d5420f8168c1665dad2'/>
<id>urn:sha1:680ad352dc598780b4945d5420f8168c1665dad2</id>
<content type='text'>
Идея такая: хочу подкладывать атрибуты в ошибки, не протаскивая их через стек (как в orm/server/objects) и не прогоняя все ошибки через специальные методы (как в orm/library/attributes). Для этого завожу fiber-local структурку с ленивым выведением строчек. Поскольку TError и TFls живут в разных мирах, пришлось сделать отдельный трамплин для совсем генеричной доработки ошибок в момент создания.

Игнат посоветовал глянуть на Codicil. Там очень похоже, но нет key/value, поэтому похитил только название. Вообще, можно унифицировать, если есть запрос.
commit_hash:203ec7abe5e8c8484e66d55f16192485db776806
</content>
</entry>
<entry>
<title>YT-22593: More trivial TString-&gt;std::string migrations</title>
<updated>2025-02-22T14:48:29Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2025-02-22T14:28:25Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=59afaa0cb7cd89146dd10f5446256afcce33bd0e'/>
<id>urn:sha1:59afaa0cb7cd89146dd10f5446256afcce33bd0e</id>
<content type='text'>
[nodiff:runtime]
commit_hash:1ba799aed1703ab7c6304b6da7090b3337f768dd
</content>
</entry>
<entry>
<title>yt/error: optimize constructing TError from TErrorException</title>
<updated>2025-02-16T10:13:15Z</updated>
<author>
<name>Konstantin Khlebnikov</name>
<email>khlebnikov@tracto.ai</email>
</author>
<published>2025-02-16T09:50:19Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=7a3958c3c6de324baab9dba4bd4eb808c1b839a6'/>
<id>urn:sha1:7a3958c3c6de324baab9dba4bd4eb808c1b839a6</id>
<content type='text'>
Here we can avoid dynamic cast and exception hazard.

Signed-off-by: Konstantin Khlebnikov &lt;khlebnikov@tracto.ai&gt;

---

Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1070
commit_hash:e0709e1fe0f2109792b20b850e0e11a6e96f846a
</content>
</entry>
<entry>
<title>YT-21233: Drop dependency on yson in library/cpp/yt/error by switch to std::string everywhere</title>
<updated>2024-12-26T08:12:17Z</updated>
<author>
<name>arkady-e1ppa</name>
<email>arkady-e1ppa@yandex-team.com</email>
</author>
<published>2024-12-26T07:52:40Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=0328aa1f62630f14d06076175e2f3750969ac813'/>
<id>urn:sha1:0328aa1f62630f14d06076175e2f3750969ac813</id>
<content type='text'>
done
commit_hash:8a83afa39917ba66a5161388a7cd74a4488d9908
</content>
</entry>
<entry>
<title>YT-21233: Issues and tidying up of rXXXXXX</title>
<updated>2024-12-25T08:15:51Z</updated>
<author>
<name>arkady-e1ppa</name>
<email>arkady-e1ppa@yandex-team.com</email>
</author>
<published>2024-12-25T07:19:49Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=47a8704130b3d47dcb4eb806c3eae41292e90eb4'/>
<id>urn:sha1:47a8704130b3d47dcb4eb806c3eae41292e90eb4</id>
<content type='text'>
commit_hash:19481c9fbb008aab4f4d676f1a3a242f6e90e90e
</content>
</entry>
<entry>
<title>YT-21233: Adjust (To/From)ErrorAttributeValue CPOs, revert ConvertTo becoming CPO, move TErrorCode and TError to library/cpp/yt/error</title>
<updated>2024-12-25T04:31:55Z</updated>
<author>
<name>arkady-e1ppa</name>
<email>arkady-e1ppa@yandex-team.com</email>
</author>
<published>2024-12-25T04:12:23Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=b5dd91799751f9924acb7c17ddad16ddb2086bba'/>
<id>urn:sha1:b5dd91799751f9924acb7c17ddad16ddb2086bba</id>
<content type='text'>
\[nodiff:caesar\]

List of changes:

 1) Make `ConvertTo` a normal function again (basically, a revert of previous change). It turned out to be very inconvenient entry point

 2) Introduce concept for "Primitive types" which are handled without yt/core module. Please note that inclusion of core **does not** affect work with primitive types (otherwise we would be facing and ODR violation). These are numerics, duration, instant, string-like objects and guid

 3) Introduce `FromErrorAttributeValue` which is a substitute to `ConvertTo` with special behavior (see below)

 4) Scheme for (de-)serialization has changed:

    1) Primitive types are handled via `ConvertToTextYsonString` and `ConvertFromTextYsonString`

    2) Other types are not supported without yt/core. Otherwise `ConvertToYsonString(value, EYsonFormat::Text)` used for serialization and `ConvertTo&lt;T&gt;(value)` for deserialization.

 5) New format of attribute value storage allows to not care about concrete type of the attribute (text yson strings can be detected since they start with `\"` and deserialized so are text yson bools, everything else is already human readable). This drops dependency on `TTokenizer`

 6) Some small parts (e.g. enums or constants or aliases) of yt/core/misc files were moved to library/cpp/yt/\* locations and re-included to drop dependencies of stripped\_error on them

 7) `TErrorAttributes` is now a simple hash map instead of a handle to `IAttributeDictionary`

 8) `ExtractFromAttributes` weak symbol is finally moved to library/cpp/yt/error due to point 9 allowing to fully drop dependency on `IAttributeDictionary`. Combined with point 7 this drops dep on yt/core/ytree altogether

 9) Moved `TErrorCode` to library/cpp/yt/error. There is a logger there which forces dep on library/cpp/yt/logging. It is not required really, and can be later removed

10) Moved `TError` with format and macroes to library/cpp/yt/error. It still (and probably forever will) depend on yson.

What can be done next: Switch TYsonString to TString and move ConvertTo/FromTextYsonString to library/cpp/yt/error. This would remove dep on library/cpp/yt/yson\_string
commit_hash:6f11dc478ab782a1f98a5aedcd45a4800d3f4e7b
</content>
</entry>
<entry>
<title>YT-21233: Introduce ToAttributeValue cpo which removes dependency of TErrorAttribute from yt/core</title>
<updated>2024-11-29T19:12:26Z</updated>
<author>
<name>arkady-e1ppa</name>
<email>arkady-e1ppa@yandex-team.com</email>
</author>
<published>2024-11-29T19:02:21Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=b21317884da9622ac16bbad26627ae014d72d6a7'/>
<id>urn:sha1:b21317884da9622ac16bbad26627ae014d72d6a7</id>
<content type='text'>
Plan:

 1) Remove `IAttributedDictionary` type from the public API. \+

 2) Remove `Set` method from public API in favor of `operator&lt;&lt;=`. \+

 3) Adopt `ConvertTo&lt;T&gt;` (or other name) CPO with proper extension into `NYT::NYson::ConvertTo` from `yt/core`.

 4) Use CPO from (3) to eliminate direct dependency on `yt/core` of `Get/Find` methods from attributes API.

 5) Adopt `ConvertToYsonString` (or other name) CPO with proper extension into `yt/core` customisations.

 6) Use CPO from (5) to eliminate direct dependency on `yt/core` of `TErrorAttribute` ctor.

 7) Swap attributes implementation to the one which doesn’t use `IAttributeDictionary`.

 8) At this point `stripped_error*` can be moved to library/cpp/yt and so can recursively dependant on THROW macro methods `Get/Find/…`.

 9) Adjust CPO’s to work with `std::string` instead of `TYsonString` assuming text format to be used (maybe `TString` for now).

10) Remove dep of `library/cpp/yt/error` on `yson` entirely.

This pr addresses 5-6 steps of plan. Below is a brief explanation of design decisions. We also expressed everything related to key-value code in terms of aliases of `TErrorAttribute` so that later we could make a relatively simple switch to `std::string`. We expect to do steps 7-8 in the next pull request as everything should be ready
commit_hash:de9feca2bd24d823b33d904ef0fa5f4856f9b020
</content>
</entry>
</feed>
