@@ -181,50 +181,18 @@ class TDefaultNodeBrokerClient
181
181
}
182
182
}
183
183
184
- static void ProcessRegistrationDynamicNodeResult (
185
- const THolder<NClient::TRegistrationResult>& result,
186
- NKikimrConfig::TAppConfig& appConfig,
187
- ui32& nodeId,
188
- TKikimrScopeId& outScopeId)
189
- {
190
- nodeId = result->GetNodeId ();
191
- outScopeId = TKikimrScopeId (result->GetScopeId ());
192
-
193
- auto &nsConfig = *appConfig.MutableNameserviceConfig ();
194
- nsConfig.ClearNode ();
195
-
196
- auto &dnConfig = *appConfig.MutableDynamicNodeConfig ();
197
- for (auto &node : result->Record ().GetNodes ()) {
198
- if (node.GetNodeId () == result->GetNodeId ()) {
199
- dnConfig.MutableNodeInfo ()->CopyFrom (node);
200
- } else {
201
- auto &info = *nsConfig.AddNode ();
202
- info.SetNodeId (node.GetNodeId ());
203
- info.SetAddress (node.GetAddress ());
204
- info.SetPort (node.GetPort ());
205
- info.SetHost (node.GetHost ());
206
- info.SetInterconnectHost (node.GetResolveHost ());
207
- info.MutableLocation ()->CopyFrom (node.GetLocation ());
208
- }
209
- }
210
- }
211
-
212
- std::variant<
213
- NYdb::NDiscovery::TNodeRegistrationResult,
214
- THolder<NClient::TRegistrationResult>> Result;
184
+ NYdb::NDiscovery::TNodeRegistrationResult Result;
215
185
public:
216
- TResult (std::variant<
217
- NYdb::NDiscovery::TNodeRegistrationResult,
218
- THolder<NClient::TRegistrationResult>> result)
186
+ TResult (NYdb::NDiscovery::TNodeRegistrationResult result)
219
187
: Result(std::move(result))
220
188
{}
221
189
222
190
void Apply (NKikimrConfig::TAppConfig& appConfig, ui32& nodeId, TKikimrScopeId& scopeId) const override {
223
- std::visit ([&appConfig, &nodeId, &scopeId]( const auto & res) mutable { ProcessRegistrationDynamicNodeResult (res , appConfig, nodeId, scopeId); }, Result );
191
+ ProcessRegistrationDynamicNodeResult (Result , appConfig, nodeId, scopeId);
224
192
}
225
193
};
226
194
227
- static NYdb::NDiscovery::TNodeRegistrationResult TryToRegisterDynamicNodeViaDiscoveryService (
195
+ static NYdb::NDiscovery::TNodeRegistrationResult TryToRegisterDynamicNode (
228
196
const TGrpcSslSettings& grpcSettings,
229
197
const TString addr,
230
198
const NYdb::NDiscovery::TNodeRegistrationSettings& settings,
@@ -252,83 +220,23 @@ class TDefaultNodeBrokerClient
252
220
return result;
253
221
}
254
222
255
- static THolder<NClient::TRegistrationResult> TryToRegisterDynamicNodeViaLegacyService (
256
- const TGrpcSslSettings& grpcSettings,
257
- const TString& addr,
258
- const TNodeRegistrationSettings& settings,
259
- const IEnv& env)
260
- {
261
- NClient::TKikimr kikimr (GetKikimr (grpcSettings, addr, env));
262
- auto registrant = kikimr.GetNodeRegistrant ();
263
-
264
- return MakeHolder<NClient::TRegistrationResult>(
265
- registrant.SyncRegisterNode (
266
- ToString (settings.DomainName ),
267
- settings.NodeHost ,
268
- settings.InterconnectPort ,
269
- settings.NodeAddress ,
270
- settings.NodeResolveHost ,
271
- settings.Location ,
272
- settings.FixedNodeID ,
273
- settings.Path ));
274
- }
275
-
276
- static THolder<NClient::TRegistrationResult> RegisterDynamicNodeViaLegacyService (
277
- const TGrpcSslSettings& grpcSettings,
278
- const TVector<TString>& addrs,
279
- const TNodeRegistrationSettings& settings,
280
- const IEnv& env,
281
- IInitLogger& logger)
282
- {
283
- THolder<NClient::TRegistrationResult> result;
284
- while (!result || !result->IsSuccess ()) {
285
- for (const auto & addr : addrs) {
286
- result = TryToRegisterDynamicNodeViaLegacyService (
287
- grpcSettings,
288
- addr,
289
- settings,
290
- env);
291
- if (result->IsSuccess ()) {
292
- logger.Out () << " Success. Registered via legacy service as " << result->GetNodeId () << Endl;
293
- break ;
294
- }
295
- logger.Err () << " Registration error: " << result->GetErrorMessage () << Endl;
296
- }
297
- if (!result || !result->IsSuccess ()) {
298
- env.Sleep (TDuration::Seconds (1 ));
299
- }
300
- }
301
- if (!result) {
302
- ythrow yexception () << " Invalid result" ;
303
- }
304
-
305
- if (!result->IsSuccess ()) {
306
- ythrow yexception () << " Cannot register dynamic node: " << result->GetErrorMessage ();
307
- }
308
-
309
- return result;
310
- }
311
-
312
- static NYdb::NDiscovery::TNodeRegistrationResult RegisterDynamicNodeViaDiscoveryService (
223
+ static NYdb::NDiscovery::TNodeRegistrationResult RegisterDynamicNodeImpl (
313
224
const TGrpcSslSettings& grpcSettings,
314
225
const TVector<TString>& addrs,
315
226
const NYdb::NDiscovery::TNodeRegistrationSettings& settings,
316
227
const IEnv& env,
317
228
IInitLogger& logger)
318
229
{
319
230
NYdb::NDiscovery::TNodeRegistrationResult result;
320
- const size_t maxNumberReceivedCallUnimplemented = 5 ;
321
- size_t currentNumberReceivedCallUnimplemented = 0 ;
322
- while (!result.IsSuccess () && currentNumberReceivedCallUnimplemented < maxNumberReceivedCallUnimplemented) {
231
+ while (!result.IsSuccess ()) {
323
232
for (const auto & addr : addrs) {
324
233
logger.Out () << " Trying to register dynamic node to " << addr << Endl;
325
- result = TryToRegisterDynamicNodeViaDiscoveryService (
326
- grpcSettings,
327
- addr,
328
- settings,
329
- env);
234
+ result = TryToRegisterDynamicNode (grpcSettings,
235
+ addr,
236
+ settings,
237
+ env);
330
238
if (result.IsSuccess ()) {
331
- logger.Out () << " Success. Registered via discovery service as " << result.GetNodeId () << Endl;
239
+ logger.Out () << " Success. Registered as " << result.GetNodeId () << Endl;
332
240
logger.Out () << " Node name: " ;
333
241
if (result.HasNodeName ()) {
334
242
logger.Out () << result.GetNodeName ();
@@ -340,9 +248,6 @@ class TDefaultNodeBrokerClient
340
248
}
341
249
if (!result.IsSuccess ()) {
342
250
env.Sleep (TDuration::Seconds (1 ));
343
- if (result.GetStatus () == NYdb::EStatus::CLIENT_CALL_UNIMPLEMENTED) {
344
- currentNumberReceivedCallUnimplemented++;
345
- }
346
251
}
347
252
}
348
253
return result;
@@ -381,23 +286,11 @@ class TDefaultNodeBrokerClient
381
286
{
382
287
auto newRegSettings = GetNodeRegistrationSettings (regSettings);
383
288
384
- std::variant<
385
- NYdb::NDiscovery::TNodeRegistrationResult,
386
- THolder<NClient::TRegistrationResult>> result = RegisterDynamicNodeViaDiscoveryService (
387
- grpcSettings,
388
- addrs,
389
- newRegSettings,
390
- env,
391
- logger);
392
-
393
- if (!std::get<NYdb::NDiscovery::TNodeRegistrationResult>(result).IsSuccess ()) {
394
- result = RegisterDynamicNodeViaLegacyService (
395
- grpcSettings,
396
- addrs,
397
- regSettings,
398
- env,
399
- logger);
400
- }
289
+ NYdb::NDiscovery::TNodeRegistrationResult result = RegisterDynamicNodeImpl (grpcSettings,
290
+ addrs,
291
+ newRegSettings,
292
+ env,
293
+ logger);
401
294
402
295
return std::make_shared<TResult>(std::move (result));
403
296
}
0 commit comments