summaryrefslogtreecommitdiffstats
path: root/library/cpp
Commit message (Collapse)AuthorAgeFilesLines
* faster escapestyopkin2026-02-246-15/+200
| | | | | | | | | | | | | | 2% int'ов сидят в Escape. pepe watafa. <https://nda.ya.ru/t/AJC4zGq27VFEkb> Тут играясь с блоками получилось на реальном cgi из прода \~33% срезать. Мелочь, а приятно. На самом деле, хотелось бы узнать как правильно делать "некрасивую, но ускоряющую" гадость в library/cpp. Все тесты работают, но тем не менее =) До: <https://nda.ya.ru/t/Iv6Y0jQf7VFEkc> После: <https://nda.ya.ru/t/KO_Rgvi87VFEke> Тут, к сожалению не на прогрузе, но уже видно. commit_hash:671028887e7d9320c8e9a393a0abb203207eb883
* New version of the tld SKIP_CHECK SKIP_REVIEWrobot-ratatosk2026-02-221-1/+1
| | | | commit_hash:9f82ca4e286c6bda445d50e69dbf631f07eab5b6
* Fixed error comparisonmikari2026-02-202-1/+15
| | | | commit_hash:76b32cc3992d0c6ce820f0b52a06deade4fa7558
* /3: Get rid of YLOG*_F macros in favor of just YLOG*iofik2026-02-201-1/+1
| | | | | _Все вызовы вида YLOG\*\_F(...) заменены на YLOG\*_(...) по всему дереву unified\_agent (например, YLOG\_DEBUG\_F → YLOG\_DEBUG, YLOG\_ERR\_F → YLOG\_ERROR). commit_hash:483c6f5cb6db2d44e9d71b427a697dc2850cba1f
* LLVM deny specializations for some classes. Allow them explicitly in librarymikhnenko2026-02-201-0/+3
| | | | | | 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
* /2: Use our internal logger header, add logging metricsiofik2026-02-196-87/+388
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | # Улучшения библиотеки логирования и переход на троттлинг логов ## Описание Этот 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
* New version of the tld SKIP_CHECK SKIP_REVIEWrobot-ratatosk2026-02-191-1/+1
| | | | commit_hash:444f289f3b980580fac9b80c59f1bf1a255b9e12
* YT-27436 Introduce PP_IS_EMPTYdann2392026-02-182-0/+21
| | | | commit_hash:96d6c16b241e44c6cd7910b16864fd0d037c6e8b
* YT-22792 Support heterogeneous lookup for intrusive pointersdann2392026-02-182-46/+91
| | | | commit_hash:058958336f8d0f263f11997b6bf41f858fdc55a0
* add heic support to MIME detectorsergarseev2026-02-172-0/+3
| | | | commit_hash:18757b3abf06220d28029bbcf9777ac15824637b
* New version of the tld SKIP_CHECK SKIP_REVIEWrobot-ratatosk2026-02-161-2/+1
| | | | commit_hash:0d473923289c49fa726588cccb3f93909c81745b
* /0: Implement logging with throttling, replace YLOG macro with a new oneiofik2026-02-151-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ### Добавлен троттлинг логов для предотвращения флуда **Основная цель:** Защита от переполнения логов повторяющимися сообщениями. #### Что добавлено: 1. **Механизм троттлинга логов** ([`common/util/logger.h`](common/util/logger.h), [`common/util/logger.cpp`](common/util/logger.cpp)) - Ограничение: по умолчанию максимум 20 сообщений за 10 секунд для каждой точки логирования - Независимый троттлинг для каждого места вызова `YLOG` (через `static` переменную состояния) - Подсчёт пропущенных сообщений с выводом в формате `[+N suppressed]` - Минимальные накладные расходы: использует `GetCycleCount()` вместо системных вызовов времени - Атомарные операции для потокобезопасности 2. **Настраиваемый троттлинг** - Макрос `YLOG_THROTTLED(logger, priority, maxLogs, intervalSec, ...)` для кастомных лимитов - Макросы `YLOG_THROTTLE_MAX_LOGS` и `YLOG_THROTTLE_INTERVAL_SECS` для глобальной настройки (например, в тестах) 3. **Поддержка C++20 `std::format`** - Макросы `YLOG_*` теперь поддерживают форматирование в стиле C++20: `YLOG_ERR("value: {}", x)` - Обратная совместимость с `YLOG_*_F` макросами сохранена - Специальная обработка `TStringBuilder` для избежания проблем с временными объектами 4. **Тесты** ([`tests/gtests/logger_tests/`](tests/gtests/logger_tests/)) - Проверка базового троттлинга - Проверка счётчика пропущенных сообщений - Проверка независимости троттлинга для разных точек логирования - Проверка форматирования сообщений #### Технические изменения: **Изменён порядок аргументов в макросе `YLOG`:** - Было: `YLOG(priority, message, logger)` - Стало: `YLOG(logger, priority, message, ...)` Это изменение потребовало обновления всех вызовов `YLOG` в кодовой базе (~30 файлов), но обеспечивает: - Единообразие с другими логирующими библиотеками - Возможность использования variadic arguments для форматирования - Правильную работу с `const auto&` для продления времени жизни временных объектов #### Примеры использования: ```cpp // Базовое использование (троттлинг 20 логов/10 сек) YLOG_ERR("Error occurred"); YLOG_INFO("Processing item: {}", itemId); ``` #### Влияние на производительность: - Минимальные накладные расходы: ~10-20 наносекунд на вызов (использование CPU cycles вместо системного времени) - Атомарные операции только при необходимости логирования - Отсутствие дополнительных (по сравнению с текущим кодом) аллокаций памяти в hot path #### Обратная совместимость: - Все существующие `YLOG_*` и `YLOG_*_F` макросы работают как раньше - Добавлен троттлинг по умолчанию для всех логов (может потребовать внимания при отладке) commit_hash:d6e98b82486b99b945a1ba264fb2da969db4fcfc
* New version of the tld SKIP_CHECK SKIP_REVIEWrobot-ratatosk2026-02-131-2/+1
| | | | commit_hash:1ad357a58cab779a09a8074175650e4147a845e5
* Intermediate changesrobot-piglet2026-02-128-25/+16
| | | | commit_hash:703067c8695868118d5e3360507697c32e6a4002
* YT-27361: Make TEnumIndexedArray fully constexprapachee2026-02-112-16/+16
| | | | commit_hash:7752326f65dbdee180e3b9fba78f6a2743bf948e
* YT-27167: Better TBitwiseUnversionedValueHashpavook2026-02-113-0/+29
| | | | | | | | | | | | | | | +20-30% throughput on UpdateColumnarStatistics benchmark (with large statistics enabled) - Do not factor in value.Id when calculating column digest - Pack metadata directly instead of multiple HashCombine calls - Use SplitMix64 finalizer for proper bit distribution - Use cheaper xor with metadata instead of HashCombine - Use XXH3 for strings - Remove unnecessary copy - Measured quality increased: on 20 (c=1..20) sequences `{nc | n \in [1..10^6]}` MAE dropped from ~36% to ~20% HLL digests might temporarily suffer a 2x increase upon merging with the previously computed ones. commit_hash:0bf661245cf1848ba9ef8b6c840c18dfd05bd2a4
* Return old implementation of GetWorkerThreadID. Do not persist threadId ↵akhropov2026-02-102-23/+4
| | | | | | inside SetSparseFeatureBlock., commit_hash:0f88c1d2928f092c09638d654fca3baa6cb4f505
* Intermediate changesrobot-piglet2026-02-102-5/+3
| | | | commit_hash:d1060afa655a4f9d6d4599152e96f7d19f25a506
* Add missing bigtzdate bitsaneporada2026-02-101-0/+3
| | | | commit_hash:e0aa8f376556b2915197320fdf60c810b71962cf
* Add direct includes required by internal libcxx changes in librarymikhnenko2026-02-101-0/+1
| | | | | | Original errors you can see [here](https://nda.ya.ru/t/cIW6kCld7U2bZB or [here](https://nda.ya.ru/t/kpJPyHA27U2bZJ commit_hash:d932f70eceac25c1d3b701b7a60be1b823b1f08b
* [PoC] Clang tests full meta-information listing as jsonn-khamraev2026-02-095-2/+72
| | | | commit_hash:e587d328242a2cf210cd1f612b4971e747e2c4c7
* New version of the tld SKIP_CHECK SKIP_REVIEWrobot-ratatosk2026-02-071-1/+1
| | | | commit_hash:8a1fe870b29249760b698ef95b4513fd0bbf8745
* Add fast timezone id validation functionaneporada2026-02-076-3/+29
| | | | commit_hash:a2c20ffc1acc83385a3195d76eb95818b3ad6a67
* Intermediate changesrobot-piglet2026-02-061-6/+6
| | | | commit_hash:9aba7173fb1ef0a42bfc7d91ec99a376e09834eb
* YT-27244: range helpers move to librarypanesher2026-02-056-0/+421
| | | | commit_hash:f257ebdacfbf0549a0f55cc37df2c059629bac3a
* New version of the tld SKIP_CHECK SKIP_REVIEWrobot-ratatosk2026-02-041-1/+1
| | | | commit_hash:e8fdd005d2e57ea8b88f027e3b7eae245d89bcd9
* New version of the tld SKIP_CHECK SKIP_REVIEWrobot-ratatosk2026-02-011-1/+1
| | | | commit_hash:cdde08394e643fc08d9b4ea1b93e3191c3d93786
* New version of the tld SKIP_CHECK SKIP_REVIEWrobot-ratatosk2026-01-311-1/+1
| | | | commit_hash:cb111b7213d55cae50a1d922786827d715b2ce4e
* move library/cpp/threading/atomic to library/cpp/deprecated/atomic_booltobo2026-01-2913-14/+14
| | | | commit_hash:0981fb113212b130cb676672e125982188e4fd20
* TAtomic => std::atomic in library/cpp/coroutine/enginetobo2026-01-292-5/+5
| | | | commit_hash:dec1324c908f86e371bfda82e5cb1d90f06a9d06
* Intermediate changesrobot-piglet2026-01-291-0/+2
| | | | commit_hash:b99ce0014bc419134aa5cd9d21ec17472a7efcce
* TAtomic => std::atomic in library/cpp/threading/atomictobo2026-01-282-12/+9
| | | | commit_hash:d3337fcf8e16f28dc99d9466172f80b83d2fe569
* Do not copy holder ptr in TSharedMutableRange::GetHolderpechatnov2026-01-281-2/+2
| | | | commit_hash:d0a59b050291e7d3758b46f92f524fd3c60fac54
* New version of the tld SKIP_CHECK SKIP_REVIEWrobot-ratatosk2026-01-281-1/+1
| | | | commit_hash:4a586fb909dc17910cd4b1f43efe932a2839d67a
* Intermediate changesrobot-piglet2026-01-272-1/+12
| | | | commit_hash:297b5880340725ec9a28608c1af7a50742ef4995
* Forbid use of array types in UNIT_ASSERT conditions #30109swarmer2026-01-271-0/+1
| | | | commit_hash:bfc1eb4f21ecb804205db2c38e09cda4b5b9cea4
* feat contrib: add futures subscription from contribkuzin572026-01-2622-0/+1935
| | | | | <https://nda.ya.ru/t/nesU8Ssd7StzZd> commit_hash:3b5733332bec71a4f2f26e6e878afb23dde01fe7
* Default CancellationToken should create only one instance of a Promiseswarmer2026-01-261-1/+5
| | | | | The NewPromise() function should not be called if the singleton has already been constructed. commit_hash:9e3b6c8908bbef648bf52ca2506ff0ae03ed0530
* Intermediate changesrobot-piglet2026-01-263-0/+65
| | | | commit_hash:4373219e5a3e59d3b6020a500b3953d735a28ef0
* YT-17905: Drop unused peerdirbabenko2026-01-253-220/+0
| | | | commit_hash:579e0752cfe1226a83d5b52df5ba612ad4621493
* New version of the tld SKIP_CHECK SKIP_REVIEWrobot-ratatosk2026-01-251-1/+1
| | | | commit_hash:ab4ceb4485a087a6294a6497e8cb9b331ddc036a
* cosmetics: use std::move() + constexpr + make argument name consistent with ↵tobo2026-01-241-7/+7
| | | | | | declaration commit_hash:6060ce65f9cdc998b9763fcc429bdd79188f522b
* TAtomic => std::atomic in library/cpp/threading/local_executortobo2026-01-232-36/+35
| | | | commit_hash:1e6b73c17aaaf69b19ff38a4b20246c45aeb3266
* Fix description of TYsonStringbabenko2026-01-231-1/+1
| | | | commit_hash:47bef2786d6025ec7e078b5989df54417315ac77
* New version of the tld SKIP_CHECK SKIP_REVIEWrobot-ratatosk2026-01-231-1/+1
| | | | commit_hash:a39ed963e1f26fffdbc6055970b66490b2503ec5
* TAtomic => std::atomic in library/cpp/threading/cron + cosmeticstobo2026-01-223-20/+18
| | | | commit_hash:3705bbac91a604b06838ca310e992f1b7728426d
* cosmetics - make field initialization more consistenttobo2026-01-201-6/+3
| | | | commit_hash:709abab383d9e399b60eb6acf6ade302420aefcd
* TAtomic => std::atomictobo2026-01-202-17/+11
| | | | commit_hash:4412172db084730a7f35a60c927e848477ccbcfb
* stack_vector: remove usage of deprecated aligned_storage_tswarmer2026-01-191-1/+1
| | | | commit_hash:d4bf2f7b3c17de411be28ab682a4a6c323720b60
* Add direct includes required by internal libcxx changes in librarymikhnenko2026-01-191-0/+1
| | | | commit_hash:7ba419fb89ea78bf52e012fc9ef4ecccf35edca9