summaryrefslogtreecommitdiffstats
path: root/library/cpp/monlib/encode
Commit message (Collapse)AuthorAgeFilesLines
* label size extensionivantsvetkov2026-07-072-1/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | **Было:** Prometheus decoder ограничивает длину значений меток метрик максимум 256 символами. Попытка передать метрику с более длинным значением метки приводит к исключению `TPrometheusDecodeException`. **Стало:** Максимальная длина значения метки расширена до 1024 символов. Системы, которые генерируют метрики с более длинными значениями (например, с ID источников данных, URL, или сложных идентификаторов), теперь могут успешно передавать такие метрики в Unified Agent без ошибок. **Практический эффект:** Улучшение совместимости с внешними системами мониторинга и приложениями, которые требуют передачи длинных меток. Существующие системы с метками < 256 символов продолжают работать без изменений. --- ## С точки зрения разработчика ### Структурные изменения Расширение требовало изменения способа хранения длины строки в пуле коротких строк: 1. **Prometheus decoder** (library/cpp/monlib): - `MAX_LABEL_VALUE_LEN`: 256 → 1024 2. **Short string pool** (logbroker/unified_agent/common): - `MaxLabelSize`: 255 → 1024 - **Ключевое изменение:** Размер строки теперь хранится как `ui16` (2 байта) вместо `unsigned char` (1 байт) - Было: `*slot->Payload() = static_cast<unsigned char>(s.size())` - Стало: `memcpy(slot->Payload(), &size, sizeof(ui16))` - Это позволяет хранить строки до 65535 символов (но логически ограничено на уровне валидации) ### Изменённые файлы | Файл | Основные изменения | |------|------------------| | `prometheus_decoder.cpp` | `MAX_LABEL_VALUE_LEN: 256 → 1024` | | `prometheus_decoder_ut.cpp` | +2 юнит-теста для новых граничных значений | | `short_string_pool.h` | `MaxLabelSize: 255 → 1024`, operator[] использует ui16 для чтения размера | | `short_string_pool.cpp` | Allocation и copy логика адаптирована для ui16 | ### Тестирование Добавлены два новых юнит-теста: - **LabelValueAtNewLimitIsAccepted:** Метрика с меткой ровно 1023 символа успешно парсится ``` "m{l=\"" + string(1023, 'a') + "\"} 1\n" ``` - **LabelValueOverNewLimitStillThrows:** Метрика с меткой ≥1024 символов выбрасывает исключение ``` "m{l=\"" + string(1024, 'a') + "\"} 1\n" // → TPrometheusDecodeException: "trying to parse too long label value, size >= 1024" ``` ### Безопасность и совместимость - ✅ Обратно совместимо: строки < 256 символов работают так же - ✅ Валидация: лимит 1024 проверяется на уровне Ref() в пуле - ✅ Граничные случаи: добавлены тесты для 1023 и 1024 символов - ✅ Выделение памяти: правильно рассчитано с учётом новых 2 байт для размера - ✅ Я не нашел ситуации когда закодированная строка (длина + строка) улетала куда-то из пула и потом пыталась раскодироваться. Так что считаю, что миграции никакой не надо и все обратно совместимо. НАДЕЮСЬ Я НЕ ОШИБАЮСЬ commit_hash:b30852954951bd8e65d69777a59ffeb58da76b47
* [library/cpp/monlib] add v3 spack encode/decodekgershov2026-04-065-26/+520
| | | | commit_hash:91ce0e2023d29ef78fadeaded314ea236f316b8e
* [cpp/monlib] add ability to mangle name in prometheus decodervvminashkin2026-03-023-5/+83
| | | | commit_hash:ef6584bf0941f50d0833dacd3b5d14cfc1cd30a8
* Enhance library/cpp/monlib exception verbosity for debuggingydynnikov2026-02-271-2/+7
| | | | | | | | | Этот эксепшн ронял YDB RU PRESTABLE минимум дважды: \- 2025-09-10 <https://nda.ya.ru/t/VerKgHXk7VTLyV> \- 2026-02-19 <https://nda.ya.ru/t/uhTY2yqK7UtBen> Патч призван упростить отладку падений и поиски руткоза commit_hash:72d859bae3ab265a2807e566c763bfb70a92a61a
* Fix prometheus nan parsingalexnadtochiy2025-12-122-4/+23
| | | | commit_hash:ea34eba995ae4c386785fe89df58c439a2e3ea63
* [fetcher] use lz4 encodingvvminashkin2025-09-013-0/+67
| | | | | [fetcher] use lz4 encoding commit_hash:e29504c1f68be2a5d138dbba0ed461b2f2568b97
* monlib : memOnly support for JSON encoding/decoding (cpp)miktorius2025-03-067-9/+250
| | | | | | | json encoder memonly attempt commit_hash:0cef79f66356a94c398c76dc9baf2fe3ea9a6948
* monlib : adding memOnly flag support for cpp libmiktorius2025-03-038-10/+41
| | | | commit_hash:cffc55ecd6d0ea22c3c2ce52f21e6aba6da16a15
* Intermediate changesrobot-piglet2025-01-303-15/+60
| | | | commit_hash:c284e5d683d750f2d89e1bcccb3f4d334b47d60c
* Intermediate changesrobot-piglet2025-01-282-3/+35
| | | | commit_hash:93f812fd528231c67adb63e20e083855d68bfe8d
* Intermediate changesrobot-piglet2025-01-211-2/+10
| | | | commit_hash:cdae472f061820ed9998426cf0624c300468cdc8
* add include that comes transparentlytobo2024-10-111-0/+2
| | | | commit_hash:7ec5bc6f7e85e5412ff6759b0d1bd52d1172a9c1
* Remove Size, Empty and Data usages from librarymikhnenko2024-10-044-8/+8
| | | | commit_hash:ef5ad4cfa9e68bbfc586492e8c376c732d0a48af
* manage prometheusaleksei-le2024-03-194-69/+132
| | | | a543f08a6f2957757c54b3f9e5a095389a51dbeb
* skip metrics without name label instead of crashing KIKIMR-21198monster2024-03-181-3/+3
| | | | c7b986ea7dbf4feee593ab829a2ad361d46c77b0
* YDB Import 566robot-ydb-importer2024-02-145-0/+694
| | | | 96265cd0cc64e1b9bb31fe97b915ed2a09caf1cb
* fix prometheus_decoder ConsumeCounteraleksei-le2024-02-061-4/+6
|
* feat contrib: aiogram 3armenqa2024-01-1943-1106/+0
| | | | Relates: https://st.yandex-team.ru/, https://st.yandex-team.ru/
* External build system generator release 65robot-ya-builder2023-12-057-21/+21
| | | | Update tools: yexport, os-yexport
* allow multiple equal TYPE in prom metricsvalerybitsoev2023-11-231-2/+4
|
* add darwin-arm64 CMakeListsdcherednik2023-11-2014-0/+204
|
* Y_FAIL->Y_ABORT at '^li'ilnurkh2023-10-174-9/+9
| | | | https://clubs.at.yandex-team.ru/arcadia/29404
* Y_VERIFY_DEBUG->Y_DEBUG_ABORT_UNLESS at '-v ydb'ilnurkh2023-10-161-4/+4
| | | | https://clubs.at.yandex-team.ru/arcadia/29404
* Intermediate changesrobot-piglet2023-09-064-8/+4
|
* Fix input variable missprintsvidyuk2023-08-308-0/+72
|
* All .ll files support in LLVM_BCsvidyuk2023-08-308-72/+0
|
* [fetcher] support unistatkgershov2023-08-282-0/+14
|
* metrics input: compress number hist bucketsaleksei-le2023-07-132-2/+2
|
* add ymake export to ydbalexv-smirnov2023-06-1320-0/+288
|
* External build system generator release 29robot-ya-builder2023-04-197-7/+7
| | | Update tools: yexport
* Revert ymake build from ydb oss exportalexv-smirnov2023-03-2820-288/+0
|
* External build system generator release 21robot-ya-builder2023-03-177-21/+21
| | | Update tools: yexport
* add library/cpp/actors, ymake build to ydb oss exportalexv-smirnov2023-03-1520-0/+288
|
* Intermediate changesrobot-piglet2023-03-0914-0/+205
|
* Intermediate changesrobot-piglet2023-03-0721-14/+14
|
* External build system generator release 17robot-ya-builder2023-03-0613-7/+61
| | | Update tools: yexport
* Intermediate changesrobot-piglet2023-02-0721-75/+75
|
* Intermediate changesrobot-piglet2023-02-0721-75/+75
|
* External build system generator release 12robot-ya-builder2023-01-317-7/+7
| | | Update tools: yexport
* External build system generator release 8robot-ya-builder2023-01-1729-29/+29
| | | Update tools: yexport
* Sync linux-headers instead of using system onesthegeorg2022-12-1528-117/+582
|
* remove kikimr/driver DEPENDSqrort2022-12-024-811/+0
|
* validate canons without yatest_commonqrort2022-11-304-0/+811
|
* [monlib] Remove a redundant checkivanzhukov2022-10-271-1/+0
|
* Update external build system generation utilityrobot-ya-builder2022-09-012-0/+15
| | | | * [cmake] Hierarchical add_subdirectroy structure * [cmake] Support for same file compilation multiple times with different flags
* fix ya.makemonster2022-07-077-1561/+0
|
* intermediate changesarcadia-devtools2022-06-025-3/+26
| | | | ref:8868513666cce733c1c659c7f2d683ffab1150dd
* Fix proto namespace support for pluginssvidyuk2022-04-071-3/+0
| | | | ref:64f38ab703c48a08c49a2ede68481651c4d51f13
* MSI-1102 Unistat for UAiuraskvortsov2022-03-284-10/+28
| | | | ref:ac6385bada68d413b4f372ca0afea6a30a85f7d3
* intermediate changesarcadia-devtools2022-03-251-0/+13
| | | | ref:84de00009e51ecf595c13dfc2c9846069069605d