summaryrefslogtreecommitdiffstats
path: root/library/cpp/threading
diff options
context:
space:
mode:
authorandybg <[email protected]>2025-11-23 01:30:13 +0300
committerandybg <[email protected]>2025-11-23 01:48:12 +0300
commit99383234453575439d497e697d4f6b6edbdc384a (patch)
tree547c73cb61a2bff903f7b01813e7b434f8d71808 /library/cpp/threading
parent23256baf0e807c1ef0cec31efcce505684474f9d (diff)
Fix gRPC retry parser initialization race condition
Проблема: Сегментация через ~42 секунды после запуска UA в ServiceConfigParser::GetParserIndex("retry"). Причина: Static Initialization Order Fiasco + Lazy Initialization в gRPC CoreConfiguration. RetryFilter пытается получить парсер до того, как CoreConfiguration зарегистрировала его. Решение: 1. Устанавливаем лимиты потоков ДО grpc_init() (статические параметры) 2. Явно вызываем grpc_init() для гарантии выполнения всех статических инициализаторов 3. Принудительно инициализируем CoreConfiguration через CoreConfiguration::Get() Это гарантирует порядок: - Настройка лимитов потоков - Инициализация библиотеки gRPC - Построение CoreConfiguration с регистрацией всех парсеров - Только после этого фильтры могут безопасно использовать retry парсер Изменения: - library/cpp/unified_agent_client/grpc_io.cpp: Исправлена EnsureGrpcConfigured() - tests/ut/grpc_init_ut.cpp: Добавлены unit тесты - tests/grpc_init_check/: Standalone тестовая программа - tests/ut/ya.make: Интеграция тестов в систему сборки Все тесты прошли: 640/640 OK commit_hash:ed4601dfe21f6dfac653dec6e9c3e535e5a0a09c
Diffstat (limited to 'library/cpp/threading')
0 files changed, 0 insertions, 0 deletions