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
@@ -308,6 +309,18 @@ class TCreateDatabaseRequestActor : public NActors::TActorBootstrapped<TCreateDa
308
309
};
309
310
};
310
311
312
+ bool IsValidLoadControlConfig (const NConfig::TLoadControlConfig& config) {
313
+ if (!config.GetEnable ()) {
314
+ return true ;
315
+ }
316
+
317
+ const auto & databaseConnection = config.GetDatabaseConnection ();
318
+ if (!databaseConnection.GetDatabase ()) {
319
+ return false ;
320
+ }
321
+ return databaseConnection.GetEndpoint () || config.GetMonitoringEndpoint ();
322
+ }
323
+
311
324
}
312
325
313
326
class TComputeDatabaseControlPlaneServiceActor : public NActors ::TActorBootstrapped<TComputeDatabaseControlPlaneServiceActor> {
@@ -342,7 +355,7 @@ class TComputeDatabaseControlPlaneServiceActor : public NActors::TActorBootstrap
342
355
switch (controlPlane.type_case ()) {
343
356
case NConfig::TYdbComputeControlPlane::TYPE_NOT_SET:
344
357
case NConfig::TYdbComputeControlPlane::kSingle :
345
- CreateSingleClientActors (controlPlane. GetSingle () );
358
+ CreateSingleClientActors ();
346
359
break ;
347
360
case NConfig::TYdbComputeControlPlane::kCms :
348
361
CreateCmsClientActors (controlPlane.GetCms (), controlPlane.GetDatabasesCacheReloadPeriod ());
@@ -361,11 +374,13 @@ class TComputeDatabaseControlPlaneServiceActor : public NActors::TActorBootstrap
361
374
if (connection.GetCertificateFile ()) {
362
375
settings.CertificateRootCA = StripString (TFileInput (connection.GetCertificateFile ()).ReadAll ());
363
376
}
377
+ settings.Headers [NYdb::YDB_DATABASE_HEADER] = connection.GetDatabase ();
364
378
return settings;
365
379
}
366
380
367
- static NGrpcActorClient::TGrpcClientSettings CreateGrpcClientSettings (const auto & connection ) {
381
+ static NGrpcActorClient::TGrpcClientSettings CreateGrpcClientSettings (const NConfig::TComputeDatabaseConfig& config ) {
368
382
NGrpcActorClient::TGrpcClientSettings settings;
383
+ const auto & connection = config.GetExecutionConnection ();
369
384
settings.Endpoint = connection.GetEndpoint ();
370
385
settings.EnableSsl = connection.GetUseSsl ();
371
386
if (connection.GetCertificateFile ()) {
@@ -375,23 +390,21 @@ class TComputeDatabaseControlPlaneServiceActor : public NActors::TActorBootstrap
375
390
return settings;
376
391
}
377
392
378
- static NGrpcActorClient::TGrpcClientSettings CreateGrpcClientSettings (const NConfig::TComputeDatabaseConfig& config) {
379
- return CreateGrpcClientSettings (config.GetControlPlaneConnection ());
380
- }
381
-
382
- void CreateSingleClientActors (const NConfig::TYdbComputeControlPlane::TSingle& singleConfig) {
393
+ void CreateSingleClientActors () {
383
394
auto globalLoadConfig = Config.GetYdb ().GetLoadControlConfig ();
384
- if (globalLoadConfig.GetEnable ()) {
385
- TActorId clientActor;
386
- auto monitoringEndpoint = globalLoadConfig.GetMonitoringEndpoint ();
387
- auto credentialsProvider = CredentialsProviderFactory (GetYdbCredentialSettings (singleConfig.GetConnection ()))->CreateProvider ();
388
- if (monitoringEndpoint) {
389
- clientActor = Register (CreateMonitoringRestClientActor (monitoringEndpoint, singleConfig.GetConnection ().GetDatabase (), credentialsProvider).release ());
390
- } else {
391
- clientActor = Register (CreateMonitoringGrpcClientActor (CreateGrpcClientSettings (singleConfig.GetConnection ()), credentialsProvider).release ());
392
- }
393
- MonitoringActorId = Register (CreateDatabaseMonitoringActor (clientActor, globalLoadConfig, Counters).release ());
395
+ if (!globalLoadConfig.GetEnable () || !IsValidLoadControlConfig (globalLoadConfig)) {
396
+ return ;
397
+ }
398
+ TActorId clientActor;
399
+ auto monitoringEndpoint = globalLoadConfig.GetMonitoringEndpoint ();
400
+ const auto & databaseConnection = globalLoadConfig.GetDatabaseConnection ();
401
+ auto credentialsProvider = CredentialsProviderFactory (GetYdbCredentialSettings (databaseConnection))->CreateProvider ();
402
+ if (monitoringEndpoint) {
403
+ clientActor = Register (CreateMonitoringRestClientActor (monitoringEndpoint, databaseConnection.GetDatabase (), credentialsProvider).release ());
404
+ } else {
405
+ clientActor = Register (CreateMonitoringGrpcClientActor (CreateGrpcClientSettings (databaseConnection), credentialsProvider).release ());
394
406
}
407
+ MonitoringActorId = Register (CreateDatabaseMonitoringActor (clientActor, globalLoadConfig, Counters).release ());
395
408
}
396
409
397
410
void CreateCmsClientActors (const NConfig::TYdbComputeControlPlane::TCms& cmsConfig, const TString& databasesCacheReloadPeriod) {
@@ -405,14 +418,15 @@ class TComputeDatabaseControlPlaneServiceActor : public NActors::TActorBootstrap
405
418
const NConfig::TLoadControlConfig& loadConfig = config.GetLoadControlConfig ().GetEnable ()
406
419
? config.GetLoadControlConfig ()
407
420
: globalLoadConfig;
408
- if (loadConfig.GetEnable ()) {
421
+ if (loadConfig.GetEnable () && IsValidLoadControlConfig (loadConfig) ) {
409
422
TActorId clientActor;
410
423
auto monitoringEndpoint = loadConfig.GetMonitoringEndpoint ();
411
- auto credentialsProvider = CredentialsProviderFactory (GetYdbCredentialSettings (config.GetControlPlaneConnection ()))->CreateProvider ();
424
+ const auto & databaseConnection = loadConfig.GetDatabaseConnection ();
425
+ auto credentialsProvider = CredentialsProviderFactory (GetYdbCredentialSettings (databaseConnection))->CreateProvider ();
412
426
if (monitoringEndpoint) {
413
- clientActor = Register (CreateMonitoringRestClientActor (monitoringEndpoint, config. GetControlPlaneConnection () .GetDatabase (), credentialsProvider).release ());
427
+ clientActor = Register (CreateMonitoringRestClientActor (monitoringEndpoint, databaseConnection .GetDatabase (), credentialsProvider).release ());
414
428
} else {
415
- clientActor = Register (CreateMonitoringGrpcClientActor (CreateGrpcClientSettings (config ), credentialsProvider).release ());
429
+ clientActor = Register (CreateMonitoringGrpcClientActor (CreateGrpcClientSettings (databaseConnection ), credentialsProvider).release ());
416
430
}
417
431
databaseMonitoringActor = Register (CreateDatabaseMonitoringActor (clientActor, loadConfig, databaseCounters).release ());
418
432
}
@@ -429,14 +443,15 @@ class TComputeDatabaseControlPlaneServiceActor : public NActors::TActorBootstrap
429
443
const NConfig::TLoadControlConfig& loadConfig = config.GetLoadControlConfig ().GetEnable ()
430
444
? config.GetLoadControlConfig ()
431
445
: globalLoadConfig;
432
- if (loadConfig.GetEnable ()) {
446
+ if (loadConfig.GetEnable () && IsValidLoadControlConfig (loadConfig) ) {
433
447
TActorId clientActor;
434
448
auto monitoringEndpoint = loadConfig.GetMonitoringEndpoint ();
435
- auto credentialsProvider = CredentialsProviderFactory (GetYdbCredentialSettings (config.GetControlPlaneConnection ()))->CreateProvider ();
449
+ const auto & databaseConnection = loadConfig.GetDatabaseConnection ();
450
+ auto credentialsProvider = CredentialsProviderFactory (GetYdbCredentialSettings (databaseConnection))->CreateProvider ();
436
451
if (monitoringEndpoint) {
437
- clientActor = Register (CreateMonitoringRestClientActor (monitoringEndpoint, config. GetControlPlaneConnection () .GetDatabase (), credentialsProvider).release ());
452
+ clientActor = Register (CreateMonitoringRestClientActor (monitoringEndpoint, databaseConnection .GetDatabase (), credentialsProvider).release ());
438
453
} else {
439
- clientActor = Register (CreateMonitoringGrpcClientActor (CreateGrpcClientSettings (config ), credentialsProvider).release ());
454
+ clientActor = Register (CreateMonitoringGrpcClientActor (CreateGrpcClientSettings (databaseConnection ), credentialsProvider).release ());
440
455
}
441
456
databaseMonitoringActor = Register (CreateDatabaseMonitoringActor (clientActor, loadConfig, databaseCounters).release ());
442
457
}
0 commit comments