| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
selectors (#44420)
Per-database YAML configs currently have no selector/label resolution of their own. A database config's `config:` section is appended to the main config as an always-matching selector (`selector: {}`), so it applies uniformly to all nodes.
This commit adds per-database `selector_config` and `allowed_labels` support. A database admin can define selectors (e.g., by `node_type`) so different nodes receive different config variants from the same per-database config. The database config is resolved in isolation first, then injected into the main config.
Validation (permissions, forbidden labels) is enforced at the Console tablet level only. ConfigsDispatcher applies whatever it receives without re-checking permissions.
Per-database YAML config selectors are **kept disabled by default** (old behaviour) and can be turned on for separate databases (tenants) by setting database attribute `"allow_database_config_selectors" = "true"`. Attribute can be set via newly implemented **YDB CLI** command:
```
ydb -d '/cluster/database/path' admin database attribute set allow_database_config_selectors=true
```
This attribute only affects the ability to set or change the configuration, but not the use of an already defined one: current per-database config with selectors **keeps being operational even after selectors became disabled via database attribute**, while can be replaced only with config without selectors.
|
| | | |
|
| | |
| |
| | |
Co-authored-by: Kirill Vasilenko <[email protected]>
|
| | | |
|
| | |
| |
| |
| | |
Co-authored-by: Alexander Kotov <[email protected]>
Co-authored-by: Cursor <[email protected]>
|
| |\ \ |
|
| | | | |
|
| |/ / |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| |\ \ |
|
| | | | |
|
| |/ / |
|
| | | |
|
| | |
| |
| | |
Co-authored-by: Matveev Sergei <[email protected]>
|
| | |
| |
| | |
Co-authored-by: Kirill Vasilenko <[email protected]>
|
| | |
| |
| | |
Implement basic send/receive ibverb wrappers to use inside IC
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| |\ \ |
|
| | | | |
|
| |\ \ \ |
|
| | |\ \ \
| | | |/
| | |/| |
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
The constructor and move operator allow the use of classes with TIntrusiveListItem in any container, not just node-based ones. For example, it is now possible to link vector elements to a TIntrusiveList.
commit_hash:1f09f9c3296566729436c2437c675e1cc086d4d6
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
compatible
#### Backward compatibility for DateTime::Format signature ✎
- Introduces a runtime setting to control the availability of the `WriteOffsetWithColon` parameter in the `DateTime::Format` function, ensuring backward compatibility
- The new setting `MakeWriteOffsetWithColonAvailableSince` allows controlling when the colon separator in time offsets becomes available, defaulting to version 2025.05 if not specified
- Updates the ABI version to reflect the changes in the UDF interface and adds corresponding tests to verify the behavior under different configurations
<a href="https://nda.ya.ru/t/qa0kX64r7DqvtN"><font size="2">Autodescription by Yandex Code Assistant</font></a>
commit_hash:68a9855dc17000f9d47ab24e6727ef082f69504b
|
| | | | |
| | | |
| | | |
| | | | |
commit_hash:991ef644d607ef39801bae86415ae0190465084d
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
Make the yt and flow sources buildable in the ytsaurus-cpp-sdk export
commit_hash:a733ad0d534a3717117cd80d162f6d527843decd
|
| | | | |
| | | |
| | | |
| | | | |
commit_hash:c396f0c00bc1356f9f9d809903a3645773ed79f1
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
Добавить linters.make.inc для adfox
commit_hash:e981916cf9686576b60dbe94650b9e83a812e01b
|
| | | | |
| | | |
| | | |
| | | | |
commit_hash:1f18e18d7f3430b3a0261dd08c8aa2509e898b13
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
rename rules-
A project may contain many same-named programs: for example, each integration
test directory defines its own PROGRAM() conventionally called `pipeline`.
CMake requires target names to be unique across the whole project, so exporting
such a subtree to opensource forces one to write
CMAKE_EXPORTED_TARGET_NAME(unique-name) into every such module. The natural
unique name is the module path, but hardcoding path-derived names in every
ya.make is verbose and breaks on every repository move.
This PR adds CMAKE_EXPORTED_TARGET_NAME_FROM_PATH(project/root): it derives the
exported cmake target name from the module path automatically, cutting off the
irrelevant common prefix (and validating that the module really lives under it).
The output artefact keeps its short name, so tests and tooling that run the
binary are unaffected.
It also makes the underlying OUTPUT_NAME rename rules actually work in sem
export: a multi-command variable value substituted in argument position of a
sem string fails to render (`unexpected multicommand substitution`), so the
variable is moved into its own command-position slot.
commit_hash:aa970726f25773150cc839906aaddc98ee8ac412
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
- use more effective page implementation that avoid extra level of memory indirection
- it also allows emplace_back() for non-movavable non-copyable types
commit_hash:ef25b1f123742dea29a7d4fdf59a607e18a9850c
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
#### Fix use-after-free in escaped argument names parsing ✎
- Changed type of argument name variable from `TStringBuf` to `TString` to ensure proper ownership of the string data
- Added regression tests to verify correct parsing of escaped argument names with resource types
- Prevents potential use-after-free issue when parsing nested escaped identifiers where the same scratch buffer is reused
- Maintains backward compatibility while fixing memory safety issue in type string parsing
<a href="https://nda.ya.ru/t/qa0kX64r7DqvtN"><font size="2">Autodescription by Yandex Code Assistant</font></a>
commit_hash:f3e444a9d8809737ab51117fc96298967b09e623
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
os_test_tool
Проблемы с парсингом `/proc/self/cgroup` и последующим падением сборки.
commit_hash:74948cefa40ece680ad89118cb609d88f1266345
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
#### Introduce TStrongAlias type to prevent type confusion ✎
- Introduces `TStrongAlias` template to create distinct types for different conceptual uses of the same underlying data, preventing accidental mixing of semantically different values
- Replaces direct `TString` usage with `TStrongAlias<class TRuntimeSettingsStableHashTag, TString>` for runtime settings hash to enforce type safety
- Updates build configuration to include new `strong_alias` source files
- Fixes a build issue in `mkql_computation_pattern_cache_ut.cpp` by properly accessing the `resize` method on the hash object
- Provides comprehensive implementation of `TStrongAlias` including comparison, hashing, and stream output operators for type-safe usage
<a href="https://nda.ya.ru/t/qa0kX64r7DqvtN"><font size="2">Autodescription by Yandex Code Assistant</font></a>
commit_hash:0c856e748ee2198d8545f1a96d24837132cf7d64
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
#### Block Way Implementation ✎
- Implemented the `BlockWay` function to extract variant type information from block inputs, returning either tuple indices or struct member names
- Added type annotation support for `BlockWay` operations with proper handling of optional variants and different underlying types
- Introduced computation node implementation for `BlockWay` that processes both tuple and struct variants efficiently
- Enhanced runtime version handling to support the new `BlockWay` functionality with version 80
- Added comprehensive unit tests covering various scenarios including tuple variants, struct variants, optional variants, and edge cases
- Integrated `BlockWay` into the SQL parser and program builder with proper type inference and validation
- Added SQL format tests and canonical data for tuple and struct variant scenarios with and without optionality
<a href="https://nda.ya.ru/t/qa0kX64r7DqvtN"><font size="2">Autodescription by Yandex Code Assistant</font></a>
commit_hash:70a82f5d13a7c1499a9ad88fc5d9b079e352d7ef
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
**Было:** 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
|
| | | | |
| | | |
| | | |
| | | | |
commit_hash:0a6fb71a90bc16702fe3c0174948708c604e8097
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
ref: https://nda.ya.ru/t/AbfNDR767hmc8i
The 2nd (updated) generation induces dependencies into generated files from inputs, but it was not anyhow reflected in ya.make and sandboxing used to work only because inputs leaked through outputs into compilation. This issue was discovered in attempt to fix dependencies leak.
commit_hash:9af9a17fccb7e94e064dbd0af14fe69eab792f78
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
1. Добавил проверку start/end на равенство бесконечности -\> возвращается пустой список
2. Изменил логику инкремента индекса (перевел на целочисленный тип), чтобы работало валидно при малых значениях float
commit_hash:f6b473a1d0227269591f9a683d81614696f0b040
|
| | | | |
| | | |
| | | |
| | | | |
commit_hash:c47f3e7764bd7330c7ebaa5cae3b58b1ab439ad5
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
#### Introduce multi-column statistics support ✎
- Adds support for defining multi-column statistics in table schemas, allowing users to specify statistics for combinations of columns rather than individual columns
- Introduces new SQL syntax for CREATE TABLE and ALTER TABLE statements to declare statistics with optional type specifications
- Implements validation for statistics definitions, ensuring column references are valid and names are unique
- Extends the query processing pipeline to handle statistics declarations during table creation and modification operations
- Updates syntax highlighting and parsing rules to recognize the new statistics keyword and related constructs
- Adds comprehensive unit tests covering various statistics scenarios including multi-column definitions, type specifications, and validation rules
<a href="https://nda.ya.ru/t/qa0kX64r7DqvtN"><font size="2">Autodescription by Yandex Code Assistant</font></a>
commit_hash:5ca3f8721d3e3660f2bb890c1408e420cf7c3e81
|