aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorInnokentii Mokin <innokentii@ydb.tech>2024-03-10 11:07:19 +0300
committerGitHub <noreply@github.com>2024-03-10 11:07:19 +0300
commit152f0113e7072d563f6a294401b77cf9e29c62ed (patch)
tree503db987dcb3631082e1ee4983d665a08b74b03b
parenta258cd15e2ce37187d94adc6a78a9aa95208af54 (diff)
downloadydb-152f0113e7072d563f6a294401b77cf9e29c62ed.tar.gz
[Init] Move cerr/cout calls to separate interface (#2583)
-rw-r--r--ydb/core/config/init/init.cpp75
-rw-r--r--ydb/core/config/init/init.h52
-rw-r--r--ydb/core/config/init/init_impl.h30
-rw-r--r--ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp130
-rw-r--r--ydb/core/driver_lib/cli_utils/cli_cmds_server.h36
5 files changed, 165 insertions, 158 deletions
diff --git a/ydb/core/config/init/init.cpp b/ydb/core/config/init/init.cpp
index f238eb9da59..2b69e570315 100644
--- a/ydb/core/config/init/init.cpp
+++ b/ydb/core/config/init/init.cpp
@@ -280,7 +280,8 @@ class TDefaultNodeBrokerClient
const TGrpcSslSettings& grpcSettings,
const TVector<TString>& addrs,
const TNodeRegistrationSettings& settings,
- const IEnv& env)
+ const IEnv& env,
+ IInitLogger& logger)
{
THolder<NClient::TRegistrationResult> result;
while (!result || !result->IsSuccess()) {
@@ -291,10 +292,10 @@ class TDefaultNodeBrokerClient
settings,
env);
if (result->IsSuccess()) {
- Cout << "Success. Registered via legacy service as " << result->GetNodeId() << Endl;
+ logger.Out() << "Success. Registered via legacy service as " << result->GetNodeId() << Endl;
break;
}
- Cerr << "Registration error: " << result->GetErrorMessage() << Endl;
+ logger.Err() << "Registration error: " << result->GetErrorMessage() << Endl;
}
if (!result || !result->IsSuccess()) {
env.Sleep(TDuration::Seconds(1));
@@ -311,11 +312,12 @@ class TDefaultNodeBrokerClient
return result;
}
- static NYdb::NDiscovery::TNodeRegistrationResult RegisterDynamicNodeViaDiscoveryService(
+ static NYdb::NDiscovery::TNodeRegistrationResult RegisterDynamicNodeViaDiscoveryService(
const TGrpcSslSettings& grpcSettings,
const TVector<TString>& addrs,
const NYdb::NDiscovery::TNodeRegistrationSettings& settings,
- const IEnv& env)
+ const IEnv& env,
+ IInitLogger& logger)
{
NYdb::NDiscovery::TNodeRegistrationResult result;
const size_t maxNumberReceivedCallUnimplemented = 5;
@@ -328,10 +330,10 @@ class TDefaultNodeBrokerClient
settings,
env);
if (result.IsSuccess()) {
- Cout << "Success. Registered via discovery service as " << result.GetNodeId() << Endl;
+ logger.Out() << "Success. Registered via discovery service as " << result.GetNodeId() << Endl;
break;
}
- Cerr << "Registration error: " << static_cast<NYdb::TStatus>(result) << Endl;
+ logger.Err() << "Registration error: " << static_cast<NYdb::TStatus>(result) << Endl;
}
if (!result.IsSuccess()) {
env.Sleep(TDuration::Seconds(1));
@@ -371,7 +373,8 @@ public:
const TGrpcSslSettings& grpcSettings,
const TVector<TString>& addrs,
const TNodeRegistrationSettings& regSettings,
- const IEnv& env) const override
+ const IEnv& env,
+ IInitLogger& logger) const override
{
auto newRegSettings = GetNodeRegistrationSettings(regSettings);
@@ -381,14 +384,16 @@ public:
grpcSettings,
addrs,
newRegSettings,
- env);
+ env,
+ logger);
if (!std::get<NYdb::NDiscovery::TNodeRegistrationResult>(result).IsSuccess()) {
result = RegisterDynamicNodeViaLegacyService(
grpcSettings,
addrs,
regSettings,
- env);
+ env,
+ logger);
}
return std::make_unique<TResult>(std::move(result));
@@ -403,6 +408,7 @@ class TDefaultDynConfigClient
const TString &addr,
const TDynConfigSettings& settings,
const IEnv& env,
+ IInitLogger& logger,
TMaybe<NKikimr::NClient::TConfigurationResult>& res,
TString &error)
{
@@ -412,7 +418,7 @@ class TDefaultDynConfigClient
env));
auto configurator = kikimr.GetNodeConfigurator();
- Cout << "Trying to get configs from " << addr << Endl;
+ logger.Out() << "Trying to get configs from " << addr << Endl;
auto result = configurator.SyncGetNodeConfig(settings.NodeId,
settings.FQDNHostName,
@@ -425,11 +431,11 @@ class TDefaultDynConfigClient
if (!result.IsSuccess()) {
error = result.GetErrorMessage();
- Cerr << "Configuration error: " << error << Endl;
+ logger.Err() << "Configuration error: " << error << Endl;
return false;
}
- Cout << "Success." << Endl;
+ logger.Out() << "Success." << Endl;
res = result;
@@ -440,7 +446,8 @@ public:
const TGrpcSslSettings& grpcSettings,
const TVector<TString>& addrs,
const TDynConfigSettings& settings,
- const IEnv& env) const override
+ const IEnv& env,
+ IInitLogger& logger) const override
{
TMaybe<NKikimr::NClient::TConfigurationResult> res;
bool success = false;
@@ -451,7 +458,7 @@ public:
int attempts = 0;
while (!success && attempts < minAttempts) {
for (auto addr : addrs) {
- success = TryToLoadConfigForDynamicNodeFromCMS(grpcSettings, addr, settings, env, res, error);
+ success = TryToLoadConfigForDynamicNodeFromCMS(grpcSettings, addr, settings, env, logger, res, error);
++attempts;
if (success) {
break;
@@ -466,13 +473,26 @@ public:
}
if (!success) {
- Cerr << "WARNING: couldn't load config from CMS: " << error << Endl;
+ logger.Err() << "WARNING: couldn't load config from CMS: " << error << Endl;
}
return res;
}
};
+class TDefaultInitLogger
+ : public IInitLogger
+{
+public:
+ IOutputStream& Out() const noexcept override {
+ return Cout;
+ }
+
+ IOutputStream& Err() const noexcept override {
+ return Cerr;
+ }
+};
+
std::unique_ptr<IEnv> MakeDefaultEnv() {
return std::make_unique<TDefaultEnv>();
}
@@ -501,6 +521,10 @@ std::unique_ptr<IDynConfigClient> MakeDefaultDynConfigClient() {
return std::make_unique<TDefaultDynConfigClient>();
}
+std::unique_ptr<IInitLogger> MakeDefaultInitLogger() {
+ return std::make_unique<TDefaultInitLogger>();
+}
+
void CopyNodeLocation(NActorsInterconnect::TNodeLocation* dst, const NYdb::NDiscovery::TNodeLocation& src) {
if (src.DataCenterNum) {
dst->SetDataCenterNum(src.DataCenterNum.value());
@@ -754,23 +778,8 @@ NKikimrConfig::TAppConfig GetActualDynConfig(
return regularConfig;
}
-std::unique_ptr<IInitialConfigurator> MakeDefaultInitialConfigurator(
- NConfig::IErrorCollector& errorCollector,
- NConfig::IProtoConfigFileProvider& protoConfigFileProvider,
- NConfig::IConfigUpdateTracer& configUpdateTracer,
- NConfig::IMemLogInitializer& memLogInit,
- NConfig::INodeBrokerClient& nodeBrokerClient,
- NConfig::IDynConfigClient& dynConfigClient,
- NConfig::IEnv& env)
-{
- return std::make_unique<TInitialConfiguratorImpl>(
- errorCollector,
- protoConfigFileProvider,
- configUpdateTracer,
- memLogInit,
- nodeBrokerClient,
- dynConfigClient,
- env);
+std::unique_ptr<IInitialConfigurator> MakeDefaultInitialConfigurator(TInitialConfiguratorDependencies deps) {
+ return std::make_unique<TInitialConfiguratorImpl>(deps);
}
} // namespace NKikimr::NConfig
diff --git a/ydb/core/config/init/init.h b/ydb/core/config/init/init.h
index 2d2c2d15d16..93ec4136c9f 100644
--- a/ydb/core/config/init/init.h
+++ b/ydb/core/config/init/init.h
@@ -65,6 +65,13 @@ public:
virtual THashMap<ui32, TConfigItemInfo> Dump() const = 0;
};
+class IInitLogger {
+public:
+ virtual ~IInitLogger() {}
+ virtual IOutputStream& Out() const noexcept = 0;
+ virtual IOutputStream& Err() const noexcept = 0;
+};
+
// ===
class IMemLogInitializer {
@@ -105,7 +112,8 @@ public:
const TGrpcSslSettings& grpcSettings,
const TVector<TString>& addrs,
const TNodeRegistrationSettings& regSettings,
- const IEnv& env) const = 0;
+ const IEnv& env,
+ IInitLogger& logger) const = 0;
};
// ===
@@ -126,7 +134,8 @@ public:
const TGrpcSslSettings& gs,
const TVector<TString>& addrs,
const TDynConfigSettings& settings,
- const IEnv& env) const = 0;
+ const IEnv& env,
+ IInitLogger& logger) const = 0;
};
// ===
@@ -150,6 +159,17 @@ public:
THashMap<ui32, TConfigItemInfo>& configInitInfo) const = 0;
};
+struct TInitialConfiguratorDependencies {
+ NConfig::IErrorCollector& ErrorCollector;
+ NConfig::IProtoConfigFileProvider& ProtoConfigFileProvider;
+ NConfig::IConfigUpdateTracer& ConfigUpdateTracer;
+ NConfig::IMemLogInitializer& MemLogInit;
+ NConfig::INodeBrokerClient& NodeBrokerClient;
+ NConfig::IDynConfigClient& DynConfigClient;
+ NConfig::IEnv& Env;
+ NConfig::IInitLogger& Logger;
+};
+
std::unique_ptr<IConfigUpdateTracer> MakeDefaultConfigUpdateTracer();
std::unique_ptr<IProtoConfigFileProvider> MakeDefaultProtoConfigFileProvider();
std::unique_ptr<IEnv> MakeDefaultEnv();
@@ -157,34 +177,14 @@ std::unique_ptr<IErrorCollector> MakeDefaultErrorCollector();
std::unique_ptr<IMemLogInitializer> MakeDefaultMemLogInitializer();
std::unique_ptr<INodeBrokerClient> MakeDefaultNodeBrokerClient();
std::unique_ptr<IDynConfigClient> MakeDefaultDynConfigClient();
+std::unique_ptr<IInitLogger> MakeDefaultInitLogger();
-std::unique_ptr<IInitialConfigurator> MakeDefaultInitialConfigurator(
- NConfig::IErrorCollector& errorCollector,
- NConfig::IProtoConfigFileProvider& protoConfigFileProvider,
- NConfig::IConfigUpdateTracer& configUpdateTracer,
- NConfig::IMemLogInitializer& memLogInit,
- NConfig::INodeBrokerClient& nodeBrokerClient,
- NConfig::IDynConfigClient& DynConfigClient,
- NConfig::IEnv& env);
+std::unique_ptr<IInitialConfigurator> MakeDefaultInitialConfigurator(TInitialConfiguratorDependencies deps);
class TInitialConfigurator {
public:
- TInitialConfigurator(
- NConfig::IErrorCollector& errorCollector,
- NConfig::IProtoConfigFileProvider& protoConfigFileProvider,
- NConfig::IConfigUpdateTracer& configUpdateTracer,
- NConfig::IMemLogInitializer& memLogInit,
- NConfig::INodeBrokerClient& nodeBrokerClient,
- NConfig::IDynConfigClient& dynConfigClient,
- NConfig::IEnv& env)
- : Impl(MakeDefaultInitialConfigurator(
- errorCollector,
- protoConfigFileProvider,
- configUpdateTracer,
- memLogInit,
- nodeBrokerClient,
- dynConfigClient,
- env))
+ TInitialConfigurator(TInitialConfiguratorDependencies deps)
+ : Impl(MakeDefaultInitialConfigurator(deps))
{}
void RegisterCliOptions(NLastGetopt::TOpts& opts) {
diff --git a/ydb/core/config/init/init_impl.h b/ydb/core/config/init/init_impl.h
index e5ea09427bd..70b042e45c2 100644
--- a/ydb/core/config/init/init_impl.h
+++ b/ydb/core/config/init/init_impl.h
@@ -881,6 +881,7 @@ struct TAppInitDebugInfo {
class TInitialConfiguratorImpl
: public IInitialConfigurator
+ , private TInitialConfiguratorDependencies
{
ui32 NodeId = 0;
TBasicKikimrServicesMask ServicesMask;
@@ -898,30 +899,9 @@ class TInitialConfiguratorImpl
TAppInitDebugInfo InitDebug;
- NConfig::IErrorCollector& ErrorCollector;
- NConfig::IProtoConfigFileProvider& ProtoConfigFileProvider;
- NConfig::IConfigUpdateTracer& ConfigUpdateTracer;
- NConfig::IMemLogInitializer& MemLogInit;
- NConfig::INodeBrokerClient& NodeBrokerClient;
- NConfig::IDynConfigClient& DynConfigClient;
- NConfig::IEnv& Env;
-
public:
- TInitialConfiguratorImpl(
- NConfig::IErrorCollector& errorCollector,
- NConfig::IProtoConfigFileProvider& protoConfigFileProvider,
- NConfig::IConfigUpdateTracer& configUpdateTracer,
- NConfig::IMemLogInitializer& memLogInit,
- NConfig::INodeBrokerClient& nodeBrokerClient,
- NConfig::IDynConfigClient& dynConfigClient,
- NConfig::IEnv& env)
- : ErrorCollector(errorCollector)
- , ProtoConfigFileProvider(protoConfigFileProvider)
- , ConfigUpdateTracer(configUpdateTracer)
- , MemLogInit(memLogInit)
- , NodeBrokerClient(nodeBrokerClient)
- , DynConfigClient(dynConfigClient)
- , Env(env)
+ TInitialConfiguratorImpl(TInitialConfiguratorDependencies deps)
+ : TInitialConfiguratorDependencies(deps)
{}
void ValidateOptions(const NLastGetopt::TOpts& opts, const NLastGetopt::TOptsParseResult& parseResult) override {
@@ -1148,7 +1128,7 @@ public:
cf.CreateNodeLocation(),
};
- auto result = NodeBrokerClient.RegisterDynamicNode(cf.GrpcSslSettings, addrs, settings, Env);
+ auto result = NodeBrokerClient.RegisterDynamicNode(cf.GrpcSslSettings, addrs, settings, Env, Logger);
result->Apply(AppConfig, NodeId, ScopeId);
}
@@ -1196,7 +1176,7 @@ public:
AppConfig.GetAuthConfig().GetStaffApiUserToken(),
};
- TMaybe<NKikimr::NClient::TConfigurationResult> result = DynConfigClient.GetConfig(CommonAppOptions.GrpcSslSettings, addrs, settings, Env);
+ TMaybe<NKikimr::NClient::TConfigurationResult> result = DynConfigClient.GetConfig(CommonAppOptions.GrpcSslSettings, addrs, settings, Env, Logger);
if (!result) {
return;
diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp b/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp
index 3a0041160d1..65707d8f10a 100644
--- a/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp
+++ b/ydb/core/driver_lib/cli_utils/cli_cmds_server.cpp
@@ -1,84 +1,66 @@
-#include "cli.h"
-#include "cli_cmds.h"
-
-#include <ydb/core/driver_lib/run/run.h>
-#include <ydb/core/config/init/init.h>
-
-#include <memory>
+#include "cli_cmds_server.h"
namespace NKikimr::NDriverClient {
-class TClientCommandServer : public TClientCommand {
-public:
- TClientCommandServer(std::shared_ptr<TModuleFactories> factories)
- : TClientCommand("server", {}, "Execute YDB server")
- , Factories(std::move(factories))
- , ErrorCollector(NConfig::MakeDefaultErrorCollector())
- , ProtoConfigFileProvider(NConfig::MakeDefaultProtoConfigFileProvider())
- , ConfigUpdateTracer(NConfig::MakeDefaultConfigUpdateTracer())
- , MemLogInit(NConfig::MakeDefaultMemLogInitializer())
- , NodeBrokerClient(NConfig::MakeDefaultNodeBrokerClient())
- , DynConfigClient(NConfig::MakeDefaultDynConfigClient())
- , Env(NConfig::MakeDefaultEnv())
- , InitCfg(
- *ErrorCollector,
- *ProtoConfigFileProvider,
- *ConfigUpdateTracer,
- *MemLogInit,
- *NodeBrokerClient,
- *DynConfigClient,
- *Env)
- {}
-
- int Run(TConfig &/*config*/) override {
- NKikimrConfig::TAppConfig appConfig;
-
- TKikimrRunConfig RunConfig(appConfig);
-
- InitCfg.Apply(
- appConfig,
- RunConfig.NodeId,
- RunConfig.ScopeId,
- RunConfig.TenantName,
- RunConfig.ServicesMask,
- RunConfig.Labels,
- RunConfig.ClusterName,
- RunConfig.InitialCmsConfig,
- RunConfig.InitialCmsYamlConfig,
- RunConfig.ConfigInitInfo);
-
- Y_ABORT_UNLESS(RunConfig.NodeId);
- return MainRun(RunConfig, Factories);
- }
-protected:
- std::shared_ptr<TModuleFactories> Factories;
-
- std::unique_ptr<NConfig::IErrorCollector> ErrorCollector;
- std::unique_ptr<NConfig::IProtoConfigFileProvider> ProtoConfigFileProvider;
- std::unique_ptr<NConfig::IConfigUpdateTracer> ConfigUpdateTracer;
- std::unique_ptr<NConfig::IMemLogInitializer> MemLogInit;
- std::unique_ptr<NConfig::INodeBrokerClient> NodeBrokerClient;
- std::unique_ptr<NConfig::IDynConfigClient> DynConfigClient;
- std::unique_ptr<NConfig::IEnv> Env;
-
- NConfig::TInitialConfigurator InitCfg;
+TClientCommandServer::TClientCommandServer(std::shared_ptr<TModuleFactories> factories)
+ : TClientCommand("server", {}, "Execute YDB server")
+ , Factories(std::move(factories))
+ , ErrorCollector(NConfig::MakeDefaultErrorCollector())
+ , ProtoConfigFileProvider(NConfig::MakeDefaultProtoConfigFileProvider())
+ , ConfigUpdateTracer(NConfig::MakeDefaultConfigUpdateTracer())
+ , MemLogInit(NConfig::MakeDefaultMemLogInitializer())
+ , NodeBrokerClient(NConfig::MakeDefaultNodeBrokerClient())
+ , DynConfigClient(NConfig::MakeDefaultDynConfigClient())
+ , Env(NConfig::MakeDefaultEnv())
+ , Logger(NConfig::MakeDefaultInitLogger())
+ , InitCfg({
+ *ErrorCollector,
+ *ProtoConfigFileProvider,
+ *ConfigUpdateTracer,
+ *MemLogInit,
+ *NodeBrokerClient,
+ *DynConfigClient,
+ *Env,
+ *Logger
+ })
+{}
+
+int TClientCommandServer::Run(TConfig& /*config*/) {
+ NKikimrConfig::TAppConfig appConfig;
+
+ TKikimrRunConfig RunConfig(appConfig);
+
+ InitCfg.Apply(
+ appConfig,
+ RunConfig.NodeId,
+ RunConfig.ScopeId,
+ RunConfig.TenantName,
+ RunConfig.ServicesMask,
+ RunConfig.Labels,
+ RunConfig.ClusterName,
+ RunConfig.InitialCmsConfig,
+ RunConfig.InitialCmsYamlConfig,
+ RunConfig.ConfigInitInfo);
+
+ Y_ABORT_UNLESS(RunConfig.NodeId);
+ return MainRun(RunConfig, Factories);
+}
- void Config(TConfig& config) override {
- TClientCommand::Config(config);
+void TClientCommandServer::Config(TConfig& config) {
+ TClientCommand::Config(config);
- InitCfg.RegisterCliOptions(*config.Opts);
- ProtoConfigFileProvider->RegisterCliOptions(*config.Opts);
- config.SetFreeArgsMin(0);
+ InitCfg.RegisterCliOptions(*config.Opts);
+ ProtoConfigFileProvider->RegisterCliOptions(*config.Opts);
+ config.SetFreeArgsMin(0);
- config.Opts->AddHelpOption('h');
- }
+ config.Opts->AddHelpOption('h');
+}
- void Parse(TConfig& config) override {
- TClientCommand::Parse(config);
- InitCfg.ValidateOptions(*config.Opts, *config.ParseResult);
- InitCfg.Parse(config.ParseResult->GetFreeArgs());
- }
-};
+void TClientCommandServer::Parse(TConfig& config) {
+ TClientCommand::Parse(config);
+ InitCfg.ValidateOptions(*config.Opts, *config.ParseResult);
+ InitCfg.Parse(config.ParseResult->GetFreeArgs());
+}
void AddClientCommandServer(TClientCommandTree& parent, std::shared_ptr<TModuleFactories> factories) {
parent.AddCommand(std::make_unique<TClientCommandServer>(factories));
diff --git a/ydb/core/driver_lib/cli_utils/cli_cmds_server.h b/ydb/core/driver_lib/cli_utils/cli_cmds_server.h
new file mode 100644
index 00000000000..4646f37da52
--- /dev/null
+++ b/ydb/core/driver_lib/cli_utils/cli_cmds_server.h
@@ -0,0 +1,36 @@
+#pragma once
+
+#include "cli.h"
+#include "cli_cmds.h"
+
+#include <ydb/core/driver_lib/run/run.h>
+#include <ydb/core/config/init/init.h>
+
+#include <memory>
+
+namespace NKikimr::NDriverClient {
+
+class TClientCommandServer : public TClientCommand {
+public:
+ TClientCommandServer(std::shared_ptr<TModuleFactories> factories);
+
+ int Run(TConfig& config) override;
+ void Config(TConfig& config) override;
+ void Parse(TConfig& config) override;
+
+protected:
+ std::shared_ptr<TModuleFactories> Factories;
+
+ std::unique_ptr<NConfig::IErrorCollector> ErrorCollector;
+ std::unique_ptr<NConfig::IProtoConfigFileProvider> ProtoConfigFileProvider;
+ std::unique_ptr<NConfig::IConfigUpdateTracer> ConfigUpdateTracer;
+ std::unique_ptr<NConfig::IMemLogInitializer> MemLogInit;
+ std::unique_ptr<NConfig::INodeBrokerClient> NodeBrokerClient;
+ std::unique_ptr<NConfig::IDynConfigClient> DynConfigClient;
+ std::unique_ptr<NConfig::IEnv> Env;
+ std::unique_ptr<NConfig::IInitLogger> Logger;
+
+ NConfig::TInitialConfigurator InitCfg;
+};
+
+} // namespace NKikimr::NDriverClient