aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Molotkov <molotkov-and@ydb.tech>2024-07-18 19:54:30 +0300
committerGitHub <noreply@github.com>2024-07-18 19:54:30 +0300
commit96c9c9b02f126e535f516946f8d46a96c922109d (patch)
tree86157877317c97cb8c0fa56d7af2c5ecf2a6a73c
parentb4dd540e5f1c0122dda9ebc6bad10074f7193bd6 (diff)
downloadydb-96c9c9b02f126e535f516946f8d46a96c922109d.tar.gz
Remove using msgbus register node call (#6679)
-rw-r--r--ydb/core/config/init/init.cpp139
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));
}