diff options
author | Andrey Molotkov <molotkov-and@ydb.tech> | 2024-07-18 19:54:30 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-18 19:54:30 +0300 |
commit | 96c9c9b02f126e535f516946f8d46a96c922109d (patch) | |
tree | 86157877317c97cb8c0fa56d7af2c5ecf2a6a73c | |
parent | b4dd540e5f1c0122dda9ebc6bad10074f7193bd6 (diff) | |
download | ydb-96c9c9b02f126e535f516946f8d46a96c922109d.tar.gz |
Remove using msgbus register node call (#6679)
-rw-r--r-- | ydb/core/config/init/init.cpp | 139 |
1 files changed, 16 insertions, 123 deletions
diff --git a/ydb/core/config/init/init.cpp b/ydb/core/config/init/init.cpp index 9890ccabc4..87f46c27e4 100644 --- a/ydb/core/config/init/init.cpp +++ b/ydb/core/config/init/init.cpp @@ -181,50 +181,18 @@ class TDefaultNodeBrokerClient } } - static void ProcessRegistrationDynamicNodeResult( - const THolder<NClient::TRegistrationResult>& result, - NKikimrConfig::TAppConfig& appConfig, - ui32& nodeId, - TKikimrScopeId& outScopeId) - { - nodeId = result->GetNodeId(); - outScopeId = TKikimrScopeId(result->GetScopeId()); - - auto &nsConfig = *appConfig.MutableNameserviceConfig(); - nsConfig.ClearNode(); - - auto &dnConfig = *appConfig.MutableDynamicNodeConfig(); - for (auto &node : result->Record().GetNodes()) { - if (node.GetNodeId() == result->GetNodeId()) { - dnConfig.MutableNodeInfo()->CopyFrom(node); - } else { - auto &info = *nsConfig.AddNode(); - info.SetNodeId(node.GetNodeId()); - info.SetAddress(node.GetAddress()); - info.SetPort(node.GetPort()); - info.SetHost(node.GetHost()); - info.SetInterconnectHost(node.GetResolveHost()); - info.MutableLocation()->CopyFrom(node.GetLocation()); - } - } - } - - std::variant< - NYdb::NDiscovery::TNodeRegistrationResult, - THolder<NClient::TRegistrationResult>> Result; + NYdb::NDiscovery::TNodeRegistrationResult Result; public: - TResult(std::variant< - NYdb::NDiscovery::TNodeRegistrationResult, - THolder<NClient::TRegistrationResult>> result) + TResult(NYdb::NDiscovery::TNodeRegistrationResult result) : Result(std::move(result)) {} void Apply(NKikimrConfig::TAppConfig& appConfig, ui32& nodeId, TKikimrScopeId& scopeId) const override { - std::visit([&appConfig, &nodeId, &scopeId](const auto& res) mutable { ProcessRegistrationDynamicNodeResult(res, appConfig, nodeId, scopeId); }, Result); + ProcessRegistrationDynamicNodeResult(Result, appConfig, nodeId, scopeId); } }; - static NYdb::NDiscovery::TNodeRegistrationResult TryToRegisterDynamicNodeViaDiscoveryService( + static NYdb::NDiscovery::TNodeRegistrationResult TryToRegisterDynamicNode( const TGrpcSslSettings& grpcSettings, const TString addr, const NYdb::NDiscovery::TNodeRegistrationSettings& settings, @@ -252,64 +220,7 @@ class TDefaultNodeBrokerClient return result; } - static THolder<NClient::TRegistrationResult> TryToRegisterDynamicNodeViaLegacyService( - const TGrpcSslSettings& grpcSettings, - const TString& addr, - const TNodeRegistrationSettings& settings, - const IEnv& env) - { - NClient::TKikimr kikimr(GetKikimr(grpcSettings, addr, env)); - auto registrant = kikimr.GetNodeRegistrant(); - - return MakeHolder<NClient::TRegistrationResult>( - registrant.SyncRegisterNode( - ToString(settings.DomainName), - settings.NodeHost, - settings.InterconnectPort, - settings.NodeAddress, - settings.NodeResolveHost, - settings.Location, - settings.FixedNodeID, - settings.Path)); - } - - static THolder<NClient::TRegistrationResult> RegisterDynamicNodeViaLegacyService( - const TGrpcSslSettings& grpcSettings, - const TVector<TString>& addrs, - const TNodeRegistrationSettings& settings, - const IEnv& env, - IInitLogger& logger) - { - THolder<NClient::TRegistrationResult> result; - while (!result || !result->IsSuccess()) { - for (const auto& addr : addrs) { - result = TryToRegisterDynamicNodeViaLegacyService( - grpcSettings, - addr, - settings, - env); - if (result->IsSuccess()) { - logger.Out() << "Success. Registered via legacy service as " << result->GetNodeId() << Endl; - break; - } - logger.Err() << "Registration error: " << result->GetErrorMessage() << Endl; - } - if (!result || !result->IsSuccess()) { - env.Sleep(TDuration::Seconds(1)); - } - } - if (!result) { - ythrow yexception() << "Invalid result"; - } - - if (!result->IsSuccess()) { - ythrow yexception() << "Cannot register dynamic node: " << result->GetErrorMessage(); - } - - return result; - } - - static NYdb::NDiscovery::TNodeRegistrationResult RegisterDynamicNodeViaDiscoveryService( + static NYdb::NDiscovery::TNodeRegistrationResult RegisterDynamicNodeImpl( const TGrpcSslSettings& grpcSettings, const TVector<TString>& addrs, const NYdb::NDiscovery::TNodeRegistrationSettings& settings, @@ -317,18 +228,15 @@ class TDefaultNodeBrokerClient IInitLogger& logger) { NYdb::NDiscovery::TNodeRegistrationResult result; - const size_t maxNumberReceivedCallUnimplemented = 5; - size_t currentNumberReceivedCallUnimplemented = 0; - while (!result.IsSuccess() && currentNumberReceivedCallUnimplemented < maxNumberReceivedCallUnimplemented) { + while (!result.IsSuccess()) { for (const auto& addr : addrs) { logger.Out() << "Trying to register dynamic node to " << addr << Endl; - result = TryToRegisterDynamicNodeViaDiscoveryService( - grpcSettings, - addr, - settings, - env); + result = TryToRegisterDynamicNode(grpcSettings, + addr, + settings, + env); if (result.IsSuccess()) { - logger.Out() << "Success. Registered via discovery service as " << result.GetNodeId() << Endl; + logger.Out() << "Success. Registered as " << result.GetNodeId() << Endl; logger.Out() << "Node name: "; if (result.HasNodeName()) { logger.Out() << result.GetNodeName(); @@ -340,9 +248,6 @@ class TDefaultNodeBrokerClient } if (!result.IsSuccess()) { env.Sleep(TDuration::Seconds(1)); - if (result.GetStatus() == NYdb::EStatus::CLIENT_CALL_UNIMPLEMENTED) { - currentNumberReceivedCallUnimplemented++; - } } } return result; @@ -381,23 +286,11 @@ public: { auto newRegSettings = GetNodeRegistrationSettings(regSettings); - std::variant< - NYdb::NDiscovery::TNodeRegistrationResult, - THolder<NClient::TRegistrationResult>> result = RegisterDynamicNodeViaDiscoveryService( - grpcSettings, - addrs, - newRegSettings, - env, - logger); - - if (!std::get<NYdb::NDiscovery::TNodeRegistrationResult>(result).IsSuccess()) { - result = RegisterDynamicNodeViaLegacyService( - grpcSettings, - addrs, - regSettings, - env, - logger); - } + NYdb::NDiscovery::TNodeRegistrationResult result = RegisterDynamicNodeImpl(grpcSettings, + addrs, + newRegSettings, + env, + logger); return std::make_shared<TResult>(std::move(result)); } |