aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorepbugaev <epbugaev@yandex-team.com>2023-02-22 13:15:37 +0300
committerepbugaev <epbugaev@yandex-team.com>2023-02-22 13:15:37 +0300
commitaf0b2f5fabca4986dda937439e8b460f13cef2a6 (patch)
treeb0b85f684557b6c21c6f988dee5bbf5c729402ea
parentf94243367a2275dcaaea1c3e692fe1ed6c484a71 (diff)
downloadydb-af0b2f5fabca4986dda937439e8b460f13cef2a6.tar.gz
YQL fix yqlworker ua logging crash on fork
Postpone ua logger initalization in yqlworker
-rw-r--r--ydb/library/yql/utils/log/log.cpp32
-rw-r--r--ydb/library/yql/utils/log/log.h5
2 files changed, 32 insertions, 5 deletions
diff --git a/ydb/library/yql/utils/log/log.cpp b/ydb/library/yql/utils/log/log.cpp
index bc67143782..b08e3479ec 100644
--- a/ydb/library/yql/utils/log/log.cpp
+++ b/ydb/library/yql/utils/log/log.cpp
@@ -327,11 +327,6 @@ void InitLogger(const NProto::TLoggingConfig& config, bool startAsDaemon) {
break;
}
default: {
- TYqlUaLogBackendCreatorInitContext creatorContext(NProto::TLoggingConfig::ELogTo_Name(logDest.GetType()),
- logDest.GetTarget());
- if (auto creator = ILogBackendCreator::Create(creatorContext)) {
- backends.emplace_back(creator->CreateLogBackend());
- }
break;
}
}
@@ -379,6 +374,33 @@ void CleanupLogger() {
}
}
+void AddUnifiedAgentLogger(const NProto::TLoggingConfig& config) {
+ std::vector<THolder<TLogBackend>> backends;
+
+ for (const auto& logDest : config.GetLogDest()) {
+ // Generate unified agent backend if specified
+ if (logDest.GetType() == NProto::TLoggingConfig::YQL_UA_LOGGER) {
+ TYqlUaLogBackendCreatorInitContext creatorContext(NProto::TLoggingConfig::ELogTo_Name(logDest.GetType()),
+ logDest.GetTarget());
+ if (auto creator = ILogBackendCreator::Create(creatorContext)) {
+ backends.emplace_back(creator->CreateLogBackend());
+ }
+ break;
+ }
+ }
+
+ if (!backends.empty()) {
+ auto& logger = TLoggerOperator<TYqlLog>::Log();
+
+ THolder<TCompositeLogBackend> compositeBackend = MakeHolder<TCompositeLogBackend>();
+ compositeBackend->AddLogBackend(logger.ReleaseBackend());
+ for (auto& backend : backends) {
+ compositeBackend->AddLogBackend(std::move(backend));
+ }
+ logger.ResetBackend(std::move(compositeBackend));
+ }
+}
+
} // namespace NLog
} // namespace NYql
diff --git a/ydb/library/yql/utils/log/log.h b/ydb/library/yql/utils/log/log.h
index 6ab38b98db..3b16b24e3a 100644
--- a/ydb/library/yql/utils/log/log.h
+++ b/ydb/library/yql/utils/log/log.h
@@ -160,6 +160,11 @@ void InitLogger(const TString& log, bool startAsDaemon = false);
void InitLogger(const NProto::TLoggingConfig& loggingConfig, bool startAsDaemon = false);
/**
+ * @brief Add unified agent backends described in config to existing logger.
+*/
+void AddUnifiedAgentLogger(const NProto::TLoggingConfig& config);
+
+/**
* @brief Initialize logger with concrete backend.
*
* @param backend - logger backend