<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ydb/library/cpp, branch oidc-1.2.7</title>
<subtitle>Mirror of YDB github repos</subtitle>
<id>https://code.mastervirt.ru/ydb/atom?h=oidc-1.2.7</id>
<link rel='self' href='https://code.mastervirt.ru/ydb/atom?h=oidc-1.2.7'/>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/'/>
<updated>2026-02-24T20:52:05Z</updated>
<entry>
<title>faster escape</title>
<updated>2026-02-24T20:52:05Z</updated>
<author>
<name>styopkin</name>
<email>styopkin@yandex-team.com</email>
</author>
<published>2026-02-24T20:25:06Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=c71699717685cbba8eb4ee1b6e54fbc178e556da'/>
<id>urn:sha1:c71699717685cbba8eb4ee1b6e54fbc178e556da</id>
<content type='text'>
2% int'ов сидят в Escape. pepe watafa.
&lt;https://nda.ya.ru/t/AJC4zGq27VFEkb&gt;

Тут играясь с блоками получилось на реальном cgi из прода \~33% срезать. Мелочь, а приятно. На самом деле, хотелось бы узнать как правильно делать "некрасивую, но ускоряющую" гадость в library/cpp. Все тесты работают, но тем не менее =)

До: &lt;https://nda.ya.ru/t/Iv6Y0jQf7VFEkc&gt;

После: &lt;https://nda.ya.ru/t/KO_Rgvi87VFEke&gt;

Тут, к сожалению не на прогрузе, но уже видно.
commit_hash:671028887e7d9320c8e9a393a0abb203207eb883
</content>
</entry>
<entry>
<title>New version of the tld SKIP_CHECK SKIP_REVIEW</title>
<updated>2026-02-21T22:58:28Z</updated>
<author>
<name>robot-ratatosk</name>
<email>robot-ratatosk@yandex-team.com</email>
</author>
<published>2026-02-21T22:31:37Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=0cc08127f223c5d4f83d04f72c87ee581e91e510'/>
<id>urn:sha1:0cc08127f223c5d4f83d04f72c87ee581e91e510</id>
<content type='text'>
commit_hash:9f82ca4e286c6bda445d50e69dbf631f07eab5b6
</content>
</entry>
<entry>
<title>Fixed error comparison</title>
<updated>2026-02-20T19:06:38Z</updated>
<author>
<name>mikari</name>
<email>mikari@yandex-team.com</email>
</author>
<published>2026-02-20T18:39:29Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=7ce6de4e577aa2d195fa5ec995df862c60484b63'/>
<id>urn:sha1:7ce6de4e577aa2d195fa5ec995df862c60484b63</id>
<content type='text'>
commit_hash:76b32cc3992d0c6ce820f0b52a06deade4fa7558
</content>
</entry>
<entry>
<title>/3: Get rid of YLOG*_F macros in favor of just YLOG*</title>
<updated>2026-02-20T18:52:08Z</updated>
<author>
<name>iofik</name>
<email>iofik@yandex-team.com</email>
</author>
<published>2026-02-20T18:25:16Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=b972f11a5ffee8ffeac87ac0a4b0625a40e79136'/>
<id>urn:sha1:b972f11a5ffee8ffeac87ac0a4b0625a40e79136</id>
<content type='text'>
_Все вызовы вида YLOG\*\_F(...) заменены на YLOG\*_(...) по всему дереву unified\_agent (например, YLOG\_DEBUG\_F → YLOG\_DEBUG, YLOG\_ERR\_F → YLOG\_ERROR).
commit_hash:483c6f5cb6db2d44e9d71b427a697dc2850cba1f
</content>
</entry>
<entry>
<title>LLVM deny specializations for some classes. Allow them explicitly in library</title>
<updated>2026-02-20T17:03:22Z</updated>
<author>
<name>mikhnenko</name>
<email>mikhnenko@yandex-team.com</email>
</author>
<published>2026-02-20T16:06:09Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=fc2515e0245a609f5cd3b1261aacbf093f543146'/>
<id>urn:sha1:fc2515e0245a609f5cd3b1261aacbf093f543146</id>
<content type='text'>
Since [23 Jan](https://github.com/llvm/llvm-project/commit/6f684816e25d8b4e5fb2cbc7d0560d608a8bd938) llvm deny some specializations.
Original errors you can see [here](https://nda.ya.ru/t/_TK4X_pD7UuYMK
commit_hash:b1ebaf654c8aba01e0fc1b7957a5c93002fa6904
</content>
</entry>
<entry>
<title>/2: Use our internal logger header, add logging metrics</title>
<updated>2026-02-19T20:07:43Z</updated>
<author>
<name>iofik</name>
<email>iofik@yandex-team.com</email>
</author>
<published>2026-02-19T19:43:26Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=ed109965ec70b4e46ead9312cc5e33c2e561d154'/>
<id>urn:sha1:ed109965ec70b4e46ead9312cc5e33c2e561d154</id>
<content type='text'>
# Улучшения библиотеки логирования и переход на троттлинг логов

## Описание

Этот PR содержит улучшения системы логирования unified\_agent с акцентом на предотвращение флуда логов и добавление метрик логирования.

## Основные изменения

### 1. Улучшения библиотеки логирования (`library/cpp/unified_agent_client/logger`)

- **Встроенный троттлинг логов**: Добавлена поддержка ограничения частоты логирования на уровне библиотеки

  - Новые макросы `YLOG_*_T` с автоматическим троттлингом (20 логов на 10 секунд по умолчанию)
  - Независимый троттлинг для каждой точки логирования (по `__FILE__:__LINE__`)
  - Автоматический подсчет подавленных сообщений с выводом `[+N suppressed]`

- **Метрики логирования**: Добавлены счетчики для мониторинга активности логирования

  - `RecordsReceived` - общее количество попыток логирования
  - `RecordsDropped` - количество подавленных сообщений из-за троттлинга
  - Счетчики передаются через `TLogger::TCounters` при создании логгера

- **Оптимизация производительности**:

  - Использование `GetCycleCount()` для быстрого получения времени (вместо системных вызовов)
  - Relaxed memory ordering для атомарных операций (достаточно для троттлинга)
  - Минимальные накладные расходы при отключенном логировании

### 2. Переход всех логов агента на троттлинг

- **Унификация макросов**: Все макросы `YLOG_*` в `logbroker/unified_agent/common/util/logger.h` теперь используют троттлинг

  - `YLOG_DEBUG`, `YLOG_INFO`, `YLOG_WARNING`, `YLOG_ERROR` и т.д. теперь автоматически применяют троттлинг
  - Старые макросы `YLOG_*_F` теперь алиасы для новых троттлированных версий
  - Обратная совместимость полностью сохранена

- **Обновление документации**: Файл `for_ai_cpp.md` обновлен с новыми рекомендациями по логированию

### 3. Интеграция метрик логирования в телеметрию

- **Новые счетчики в `TAgentLogCounters`**:

  - `RecordsReceived` - rate метрика `agent.log.records_received`
  - `RecordsDropped` - rate метрика `agent.log.records_dropped`

- **Экспорт метрик**: Метрики логирования автоматически собираются и отправляются в телеметрию агента

- **Рефакторинг конструктора `TAgent`**:

  - Упрощена передача счетчиков через структуру `TAgent::TCounters`
  - Счетчики логирования передаются в `TLogger` при инициализации

### 4. Тесты

- **Перенос тестов**: Тесты логирования перемещены из `logbroker/unified_agent/tests/gtests/logger_tests` в `library/cpp/unified_agent_client/ut`
- **Расширенное покрытие**:
  - Тесты базового троттлинга
  - Тесты счетчика подавленных сообщений
  - Тесты независимого троттлинга для разных точек логирования
  - Тесты форматирования сообщений
  - Тесты счетчиков метрик

### 5. Исправления и улучшения

- **Удаление дублирования кода**: Логика троттлинга теперь находится только в `library/cpp/unified_agent_client/logger.cpp`
- **Упрощение API**: Удален отдельный файл `logbroker/unified_agent/common/util/logger.cpp`
- **Обновление импортов**: Все файлы обновлены для использования правильных заголовочных файлов

## Преимущества

1. **Защита от флуда логов**: Автоматическое ограничение частоты логирования предотвращает переполнение логов
2. **Наблюдаемость**: Метрики логирования позволяют отслеживать активность и проблемы с логированием
3. **Производительность**: Минимальные накладные расходы благодаря оптимизированной реализации
4. **Простота использования**: Троттлинг работает автоматически, не требует изменений в коде
5. **Обратная совместимость**: Все существующие макросы продолжают работать

## Тестирование

- ✅ Все unit-тесты логирования проходят
- ✅ Integration тесты обновлены (исключение нестабильной метрики `RecordsReceived` из сравнений)
- ✅ Проверена работа троттлинга в реальных условиях
commit_hash:75fc97a8576114446bfb9ec11efbb80df322e443
</content>
</entry>
<entry>
<title>New version of the tld SKIP_CHECK SKIP_REVIEW</title>
<updated>2026-02-19T00:33:33Z</updated>
<author>
<name>robot-ratatosk</name>
<email>robot-ratatosk@yandex-team.com</email>
</author>
<published>2026-02-19T00:08:33Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=9b8613bb483703a9469011146a449ed012c151e4'/>
<id>urn:sha1:9b8613bb483703a9469011146a449ed012c151e4</id>
<content type='text'>
commit_hash:444f289f3b980580fac9b80c59f1bf1a255b9e12
</content>
</entry>
<entry>
<title>YT-27436 Introduce PP_IS_EMPTY</title>
<updated>2026-02-18T15:28:10Z</updated>
<author>
<name>dann239</name>
<email>dann239@yandex-team.com</email>
</author>
<published>2026-02-18T14:50:28Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=80feb38637cfcd598a0d734105f1ffb10dc124a2'/>
<id>urn:sha1:80feb38637cfcd598a0d734105f1ffb10dc124a2</id>
<content type='text'>
commit_hash:96d6c16b241e44c6cd7910b16864fd0d037c6e8b
</content>
</entry>
<entry>
<title>YT-22792 Support heterogeneous lookup for intrusive pointers</title>
<updated>2026-02-18T13:57:06Z</updated>
<author>
<name>dann239</name>
<email>dann239@yandex-team.com</email>
</author>
<published>2026-02-18T13:28:29Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=5e1f9b72e30e40a427124529ea1aec536dbe10d4'/>
<id>urn:sha1:5e1f9b72e30e40a427124529ea1aec536dbe10d4</id>
<content type='text'>
commit_hash:058958336f8d0f263f11997b6bf41f858fdc55a0
</content>
</entry>
<entry>
<title>add heic support to MIME detector</title>
<updated>2026-02-17T12:08:00Z</updated>
<author>
<name>sergarseev</name>
<email>sergarseev@yandex-team.com</email>
</author>
<published>2026-02-17T11:23:25Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=ce9e7c7afa0b40dcf8cfcc3909ad93a9d2cea6ad'/>
<id>urn:sha1:ce9e7c7afa0b40dcf8cfcc3909ad93a9d2cea6ad</id>
<content type='text'>
commit_hash:18757b3abf06220d28029bbcf9777ac15824637b
</content>
</entry>
</feed>
