| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
быстрой отдачи метрик в Multishard Metrics Pull
## С точки зрения пользователя
### 1. Как включать изменения
- Изменения автоматически активируются при использовании `metrics_pull_output_par` параметра
- Количество тредов в тредпуле устанавливается параметром `metrics_pull_output_threads` (по-умолчанию 1)
- Совместимо с существующими конфигурациями метрик
#### Пример конфигурации:
```yaml
experimental:
metrics_pull_output_par: true
metrics_pull_output_threads: 16
```
### 2. На что влияют изменения
- **Производительность обработки метрик:** Группировка метрик по шардам теперь происходит один раз в момент записи сообщения в хранилище
- **Масштабируемость:** Параллельная обработка команд на запись и чтение сообщений
## С точки зрения программиста
### 1. Новая архитектура и взаимодействие
#### Архитектура шардирования
```
TMultishardMetricsStoreHandler
↓
TShardedMetricsQueue
↓
TUAShardedMetricsWriter → IMultiShardEncoder
```
#### Принцип работы
1. **Шардирование:** Метрики группируются по ключу `(project, service, cluster)` из лейблов `__ua_project`, `__ua_service`, `__ua_cluster`
2. **Сортировка:** Внутри каждого сообщения метрики сортируются по ключам шардов
3. **Слияние:** При чтении используется priority queue для объединения шардов из разных сообщений
4. **Вывод:** Данные выводятся последовательно по шардам а внутри шарда в порядке добавления сообщений
### 2. Новые классы
#### `TMultishardMetricsStoreHandler`
- **Назначение:** Основной обработчик команд для шардированных метрик
- **Ключевые методы:**
- `Handle(TWriteCmd&)` - запись метрик в очередь
- `Handle(TMultishardReadCmd&)` - чтение из множественных шардов
- `Handle(TReadCmd&)` - чтение из одного шарда - не поддерживатся
- Обработчики остальных сообщений адаптированы для работы с `TShardedMetricsQueue`
- **Особенности:** Управляет сессиями и делегирует работу с данными в `TShardedMetricsQueue`
#### `TShardedMetricsQueue`
- **Назначение:** Очередь метрик с поддержкой шардирования
- **Ключевые структуры:**
```cpp
struct TShardedMessage {
std::unique_ptr<TOutputMessage> Message;
std::vector<TChunk> Chunks; // Индексы шардов
};
```
- **Алгоритм:** Сортировка метрик по шардам + priority queue для слияния при чтении
#### `IUAShardedMetricsWriter` + `TUAShardedMetricsWriter`
- **Назначение:** Интерфейс и реализация для записи шардированных метрик
- **Расширение:** Добавляет методы `OnShardBegin/End`, `OnStreamBegin/End` к базовому `IUAMetricsWriter`
- **Интеграция:** Работает с `NSolomon::NMultiShard::IMultiShardEncoder`
### 3. Рефакторинг
#### Изменения в базовых классах
- **`TMetricsStoreHandlerBase`:** Вынесен метод `GetMetricsWriterOptions()` для переиспользования
- **`TUAMetricsWriter`:** Добавлено `virtual` наследование для множественного наследования
!!! - **`TOutputItem`:** Изменена видимость конструктора (убран лишний `private`)
#### Структурные изменения
- **Новый модуль:** `metrics_multishard_pull_output` с собственными классами
- **Тесты:** Добавлены unit-тесты `sharded_metrics_queue_ut.cpp` для проверки логики шардирования, а интеграционные тесты продублированы для проверки работы в параллельном режиме
- **Сборка:** Обновлен `ya.make` для включения новых файлов
commit_hash:44618a480d29307e7131b82b19473d284ea68efa
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Разломались на вызове YLOG\_DEBUG\_F с ошибкой:
```
/home/kirill-bel/arcadia/logbroker/unified_agent/common/zstd_file_stream.cpp:39:17: error: no member named 'format' in namespace 'std'
39 | YLOG_DEBUG_F("TZstdFileStream starting from frame pos = {} frame offset = {}",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
40 | lastFramePos, lastFrameOffset);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
В YLOG\_DEBUG\_F используется `std::format`, но хедер не включен в `library/cpp/unified_agent_client/logger.h`:
```
#define YLOG_DEBUG_F(fmt, ...) YLOG_DEBUG(std::format(fmt, __VA_ARGS__))
```
commit_hash:0a82f439ec6b8d83e2f4ac1a7d8a8c8cf29b9cc2
|
| |
|
|
|
|
|
| |
YLOG_<Type>(std::format(...)) to them
Мы часто используем std::format, готовясь к переходу с TString на std::string, но из-за этого появляется много лишнего кода. Поэтому были добавлены макросы логгера для удобства и существующий код был переведен на них
commit_hash:e564c913e0dc82817152b7a15c543a77812a1dcc
|
| |
|
|
|
| |
Убираю лишнее копирование. Актуально для REVIEW:7901279
commit_hash:79f0f8873f80375269dd5384e189ac4f3b260017
|
| |
|
|
| |
commit_hash:af6dedadd4d7fe292bcb7a8b6de366aff4e630b1
|
| |
|
|
|
|
|
| |
Add test to verify the threads limit
Try to fix; Limit number of gRPC threads.
commit_hash:d525e94e0ef397bf05d367ec9904d674c17d0d76
|
| |
|
|
|
|
|
| |
fintech, games, geobase, infra, ipreg, juggler, kernel, keyboard, laas, library, logbroker, logos, mail
If you think that this pr has broken something for you, roll it back
commit_hash:df8e48b2a4ecbbc74a504aa3ff62ebb8f464218d
|
| |
|
|
|
| |
Всегда ожидает Close event от СДК, но проверяет таймаут ожидания. Проверка активности соединения, по таймауту сделает реконект. Немного снижено потребление cpu.
4c41128e833c27cea3d1eb0a90c086d1a328f282
|
| |
|
|
|
|
| |
`include/grpc++` was the original directory name for all C++ header files but it conflicted with the naming scheme required for some build systems.
It is superseded by `include/grpcpp`.
ede5ac168419131cfa95db8f7d3cb0bf11597992
|
| |
|
|
| |
Relates: https://st.yandex-team.ru/, https://st.yandex-team.ru/
|
| |
|
|
|
| |
* Library import 8
* Add contrib/libs/cxxsupp/libcxx/include/__verbose_abort
|
| | |
|
| |
|
|
| |
Update tools: yexport, os-yexport
|
| | |
|
| |
|
|
| |
https://clubs.at.yandex-team.ru/arcadia/29404
|
| |
|
|
| |
https://clubs.at.yandex-team.ru/arcadia/29404
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
update grpc to 1.53.1
update grpcio/py3 to 1.53.1
Added patches:
22-grpc-code-output.patch - allow translation of grpc code to internal string type.
23-max-thread-limitation.patch - to provide interface for settings of thread number limit, as
grpc::DynamicThreadPool doesn't provide interface to limit thread number anymore.
24-support_for-non-abort-grpc.patch - generate exception instead of application crash
25-forkable-destruction-order.patch - correct forkable logic for TimerManager
27-skip-child-post-fork-operations.patch - allow to skip child post fork operations to exclude UB (used for unified agent only)
pr33495_fox_nested_fork.patch - fix issues with nested forks
pr33582_fork_handler.patch - disable fork handler support if it is not requested intentionally
|
| |
|
| |
unified-agent - fix static initialization order problem
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
update grpc to 1.50.2
update grpcio to 1.50.0
Удаленные патчи:
06-flow_control.patch - логика в upstream удалена
10-fix-crash-on-fork.patch - логика в upstream удалена
12-coverity-fix.patch - логика в upstream удалена
20-P2166-string-nullptr.patch - в upstream временный объект вместо nullptr
PR29209-fix-heap-use-after-free.patch - решение есть в upstream
Добавленные патчи:
pr33085_fix_epoll1_engine_reinit.patch
21-windows_build.patch
|
| |
|
| |
Correct order of the GRPC_ENABLE_FORK_SUPPORT set
|
| |
|
| |
Update tools: yexport
|
| | |
|
| |
|
| |
Update tools: yexport
|
| | |
|
| | |
|
| | |
|
| |
|
| |
Update tools: yexport
|
| | |
|
| |
|