diff --git a/src/backend/distributed/shared_library_init.c b/src/backend/distributed/shared_library_init.c index d285ed028..d7833bb3f 100644 --- a/src/backend/distributed/shared_library_init.c +++ b/src/backend/distributed/shared_library_init.c @@ -1023,6 +1023,16 @@ RegisterCitusConfigVariables(void) GUC_STANDARD, NULL, NULL, NULL); + DefineCustomStringVariable( + "citus.controldb_name", + gettext_noop("Which database is designated as the controldb"), + NULL, + &ControlDbName, + "", + PGC_SU_BACKEND, + GUC_STANDARD, + NULL, NULL, NULL); + DefineCustomEnumVariable( "citus.coordinator_aggregation_strategy", gettext_noop("Sets the strategy for when an aggregate cannot be pushed down. " diff --git a/src/backend/distributed/utils/maintenanced.c b/src/backend/distributed/utils/maintenanced.c index a0a7396fb..07ca7b42e 100644 --- a/src/backend/distributed/utils/maintenanced.c +++ b/src/backend/distributed/utils/maintenanced.c @@ -99,6 +99,7 @@ int Recover2PCInterval = 60000; int DeferShardDeleteInterval = 15000; int BackgroundTaskQueueCheckInterval = 5000; int MaxBackgroundTaskExecutors = 4; +char *ControlDbName = ""; /* config variables for metadata sync timeout */ int MetadataSyncInterval = 60000; @@ -146,6 +147,12 @@ InitializeMaintenanceDaemon(void) void InitializeMaintenanceDaemonForAdminDB(void) { + if (strcmp(ControlDbName, "") == 0) + { + elog(LOG, "There is no designated control database."); + return; + } + BackgroundWorker worker; memset(&worker, 0, sizeof(worker)); @@ -335,7 +342,7 @@ CitusMaintenanceDaemonMain(Datum main_arg) if (databaseOid == 0) { /* TODO : Get the admin database name from GUC contro_db*/ - char *databaseName = "postgres"; + char *databaseName = ControlDbName; BackgroundWorkerInitializeConnection(databaseName, NULL, 0); diff --git a/src/include/distributed/maintenanced.h b/src/include/distributed/maintenanced.h index e99ca377d..29027e918 100644 --- a/src/include/distributed/maintenanced.h +++ b/src/include/distributed/maintenanced.h @@ -20,6 +20,7 @@ /* config variable for */ extern double DistributedDeadlockDetectionTimeoutFactor; +extern char *ControlDbName; extern void StopMaintenanceDaemon(Oid databaseId); extern void TriggerNodeMetadataSync(Oid databaseId);