11
11
#include < ydb/library/security/ydb_credentials_provider_factory.h>
12
12
13
13
#include < ydb/public/lib/fq/scope.h>
14
+ #include < ydb/public/sdk/cpp/client/resources/ydb_resources.h>
14
15
#include < ydb/public/sdk/cpp/client/ydb_query/client.h>
15
16
#include < ydb/public/sdk/cpp/client/ydb_operation/operation.h>
16
17
@@ -273,6 +274,18 @@ class TCreateDatabaseRequestActor : public NActors::TActorBootstrapped<TCreateDa
273
274
};
274
275
};
275
276
277
+ bool IsValidLoadControlConfig (const NConfig::TLoadControlConfig& config) {
278
+ if (!config.GetEnable ()) {
279
+ return true ;
280
+ }
281
+
282
+ const auto & databaseConnection = config.GetDatabaseConnection ();
283
+ if (!databaseConnection.GetDatabase ()) {
284
+ return false ;
285
+ }
286
+ return databaseConnection.GetEndpoint () || config.GetMonitoringEndpoint ();
287
+ }
288
+
276
289
}
277
290
278
291
class TComputeDatabaseControlPlaneServiceActor : public NActors ::TActorBootstrapped<TComputeDatabaseControlPlaneServiceActor> {
@@ -307,7 +320,7 @@ class TComputeDatabaseControlPlaneServiceActor : public NActors::TActorBootstrap
307
320
switch (controlPlane.type_case ()) {
308
321
case NConfig::TYdbComputeControlPlane::TYPE_NOT_SET:
309
322
case NConfig::TYdbComputeControlPlane::kSingle :
310
- CreateSingleClientActors (controlPlane. GetSingle () );
323
+ CreateSingleClientActors ();
311
324
break ;
312
325
case NConfig::TYdbComputeControlPlane::kCms :
313
326
CreateCmsClientActors (controlPlane.GetCms (), controlPlane.GetDatabasesCacheReloadPeriod ());
@@ -326,11 +339,13 @@ class TComputeDatabaseControlPlaneServiceActor : public NActors::TActorBootstrap
326
339
if (connection.GetCertificateFile ()) {
327
340
settings.CertificateRootCA = StripString (TFileInput (connection.GetCertificateFile ()).ReadAll ());
328
341
}
342
+ settings.Headers [NYdb::YDB_DATABASE_HEADER] = connection.GetDatabase ();
329
343
return settings;
330
344
}
331
345
332
- static NGrpcActorClient::TGrpcClientSettings CreateGrpcClientSettings (const auto & connection ) {
346
+ static NGrpcActorClient::TGrpcClientSettings CreateGrpcClientSettings (const NConfig::TComputeDatabaseConfig& config ) {
333
347
NGrpcActorClient::TGrpcClientSettings settings;
348
+ const auto & connection = config.GetExecutionConnection ();
334
349
settings.Endpoint = connection.GetEndpoint ();
335
350
settings.EnableSsl = connection.GetUseSsl ();
336
351
if (connection.GetCertificateFile ()) {
@@ -340,23 +355,21 @@ class TComputeDatabaseControlPlaneServiceActor : public NActors::TActorBootstrap
340
355
return settings;
341
356
}
342
357
343
- static NGrpcActorClient::TGrpcClientSettings CreateGrpcClientSettings (const NConfig::TComputeDatabaseConfig& config) {
344
- return CreateGrpcClientSettings (config.GetControlPlaneConnection ());
345
- }
346
-
347
- void CreateSingleClientActors (const NConfig::TYdbComputeControlPlane::TSingle& singleConfig) {
358
+ void CreateSingleClientActors () {
348
359
auto globalLoadConfig = Config.GetYdb ().GetLoadControlConfig ();
349
- if (globalLoadConfig.GetEnable ()) {
350
- TActorId clientActor;
351
- auto monitoringEndpoint = globalLoadConfig.GetMonitoringEndpoint ();
352
- auto credentialsProvider = CredentialsProviderFactory (GetYdbCredentialSettings (singleConfig.GetConnection ()))->CreateProvider ();
353
- if (monitoringEndpoint) {
354
- clientActor = Register (CreateMonitoringRestClientActor (monitoringEndpoint, singleConfig.GetConnection ().GetDatabase (), credentialsProvider).release ());
355
- } else {
356
- clientActor = Register (CreateMonitoringGrpcClientActor (CreateGrpcClientSettings (singleConfig.GetConnection ()), credentialsProvider).release ());
357
- }
358
- MonitoringActorId = Register (CreateDatabaseMonitoringActor (clientActor, globalLoadConfig, Counters).release ());
360
+ if (!globalLoadConfig.GetEnable () || !IsValidLoadControlConfig (globalLoadConfig)) {
361
+ return ;
362
+ }
363
+ TActorId clientActor;
364
+ auto monitoringEndpoint = globalLoadConfig.GetMonitoringEndpoint ();
365
+ const auto & databaseConnection = globalLoadConfig.GetDatabaseConnection ();
366
+ auto credentialsProvider = CredentialsProviderFactory (GetYdbCredentialSettings (databaseConnection))->CreateProvider ();
367
+ if (monitoringEndpoint) {
368
+ clientActor = Register (CreateMonitoringRestClientActor (monitoringEndpoint, databaseConnection.GetDatabase (), credentialsProvider).release ());
369
+ } else {
370
+ clientActor = Register (CreateMonitoringGrpcClientActor (CreateGrpcClientSettings (databaseConnection), credentialsProvider).release ());
359
371
}
372
+ MonitoringActorId = Register (CreateDatabaseMonitoringActor (clientActor, globalLoadConfig, Counters).release ());
360
373
}
361
374
362
375
void CreateCmsClientActors (const NConfig::TYdbComputeControlPlane::TCms& cmsConfig, const TString& databasesCacheReloadPeriod) {
@@ -370,14 +383,15 @@ class TComputeDatabaseControlPlaneServiceActor : public NActors::TActorBootstrap
370
383
const NConfig::TLoadControlConfig& loadConfig = config.GetLoadControlConfig ().GetEnable ()
371
384
? config.GetLoadControlConfig ()
372
385
: globalLoadConfig;
373
- if (loadConfig.GetEnable ()) {
386
+ if (loadConfig.GetEnable () && IsValidLoadControlConfig (loadConfig) ) {
374
387
TActorId clientActor;
375
388
auto monitoringEndpoint = loadConfig.GetMonitoringEndpoint ();
376
- auto credentialsProvider = CredentialsProviderFactory (GetYdbCredentialSettings (config.GetControlPlaneConnection ()))->CreateProvider ();
389
+ const auto & databaseConnection = loadConfig.GetDatabaseConnection ();
390
+ auto credentialsProvider = CredentialsProviderFactory (GetYdbCredentialSettings (databaseConnection))->CreateProvider ();
377
391
if (monitoringEndpoint) {
378
- clientActor = Register (CreateMonitoringRestClientActor (monitoringEndpoint, config. GetControlPlaneConnection () .GetDatabase (), credentialsProvider).release ());
392
+ clientActor = Register (CreateMonitoringRestClientActor (monitoringEndpoint, databaseConnection .GetDatabase (), credentialsProvider).release ());
379
393
} else {
380
- clientActor = Register (CreateMonitoringGrpcClientActor (CreateGrpcClientSettings (config ), credentialsProvider).release ());
394
+ clientActor = Register (CreateMonitoringGrpcClientActor (CreateGrpcClientSettings (databaseConnection ), credentialsProvider).release ());
381
395
}
382
396
databaseMonitoringActor = Register (CreateDatabaseMonitoringActor (clientActor, loadConfig, databaseCounters).release ());
383
397
}
@@ -394,14 +408,15 @@ class TComputeDatabaseControlPlaneServiceActor : public NActors::TActorBootstrap
394
408
const NConfig::TLoadControlConfig& loadConfig = config.GetLoadControlConfig ().GetEnable ()
395
409
? config.GetLoadControlConfig ()
396
410
: globalLoadConfig;
397
- if (loadConfig.GetEnable ()) {
411
+ if (loadConfig.GetEnable () && IsValidLoadControlConfig (loadConfig) ) {
398
412
TActorId clientActor;
399
413
auto monitoringEndpoint = loadConfig.GetMonitoringEndpoint ();
400
- auto credentialsProvider = CredentialsProviderFactory (GetYdbCredentialSettings (config.GetControlPlaneConnection ()))->CreateProvider ();
414
+ const auto & databaseConnection = loadConfig.GetDatabaseConnection ();
415
+ auto credentialsProvider = CredentialsProviderFactory (GetYdbCredentialSettings (databaseConnection))->CreateProvider ();
401
416
if (monitoringEndpoint) {
402
- clientActor = Register (CreateMonitoringRestClientActor (monitoringEndpoint, config. GetControlPlaneConnection () .GetDatabase (), credentialsProvider).release ());
417
+ clientActor = Register (CreateMonitoringRestClientActor (monitoringEndpoint, databaseConnection .GetDatabase (), credentialsProvider).release ());
403
418
} else {
404
- clientActor = Register (CreateMonitoringGrpcClientActor (CreateGrpcClientSettings (config ), credentialsProvider).release ());
419
+ clientActor = Register (CreateMonitoringGrpcClientActor (CreateGrpcClientSettings (databaseConnection ), credentialsProvider).release ());
405
420
}
406
421
databaseMonitoringActor = Register (CreateDatabaseMonitoringActor (clientActor, loadConfig, databaseCounters).release ());
407
422
}
0 commit comments