mirror of https://github.com/citusdata/citus.git
Don't error out when cannot create maintenanced
parent
4a9d516f1b
commit
dbf509bbdd
|
@ -112,6 +112,7 @@ static void MaintenanceDaemonShmemExit(int code, Datum arg);
|
|||
static void MaintenanceDaemonErrorContext(void *arg);
|
||||
static bool LockCitusExtension(void);
|
||||
static bool MetadataSyncTriggeredCheckAndReset(MaintenanceDaemonDBData *dbData);
|
||||
static void WarnMaintenanceDaemonNotStarted(void);
|
||||
|
||||
|
||||
/*
|
||||
|
@ -153,8 +154,10 @@ InitializeMaintenanceDaemonBackend(void)
|
|||
|
||||
if (dbData == NULL)
|
||||
{
|
||||
/* FIXME: better message, reference relevant guc in hint */
|
||||
ereport(ERROR, (errmsg("ran out of database slots")));
|
||||
WarnMaintenanceDaemonNotStarted();
|
||||
LWLockRelease(&MaintenanceDaemonControl->lock);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/* maintenance daemon can ignore itself */
|
||||
|
@ -169,8 +172,6 @@ InitializeMaintenanceDaemonBackend(void)
|
|||
BackgroundWorker worker;
|
||||
BackgroundWorkerHandle *handle = NULL;
|
||||
|
||||
dbData->userOid = extensionOwner;
|
||||
|
||||
memset(&worker, 0, sizeof(worker));
|
||||
|
||||
SafeSnprintf(worker.bgw_name, sizeof(worker.bgw_name),
|
||||
|
@ -200,11 +201,15 @@ InitializeMaintenanceDaemonBackend(void)
|
|||
|
||||
if (!RegisterDynamicBackgroundWorker(&worker, &handle))
|
||||
{
|
||||
ereport(ERROR, (errmsg("could not start maintenance background worker"),
|
||||
errhint("Increasing max_worker_processes might help.")));
|
||||
WarnMaintenanceDaemonNotStarted();
|
||||
dbData->daemonStarted = false;
|
||||
LWLockRelease(&MaintenanceDaemonControl->lock);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
dbData->daemonStarted = true;
|
||||
dbData->userOid = extensionOwner;
|
||||
dbData->workerPid = 0;
|
||||
dbData->triggerMetadataSync = false;
|
||||
LWLockRelease(&MaintenanceDaemonControl->lock);
|
||||
|
@ -235,6 +240,17 @@ InitializeMaintenanceDaemonBackend(void)
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* WarnMaintenanceDaemonNotStarted warns that maintenanced couldn't be started.
|
||||
*/
|
||||
static void
|
||||
WarnMaintenanceDaemonNotStarted(void)
|
||||
{
|
||||
ereport(WARNING, (errmsg("could not start maintenance background worker"),
|
||||
errhint("Increasing max_worker_processes might help.")));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* CitusMaintenanceDaemonMain is the maintenance daemon's main routine, it'll
|
||||
* be started by the background worker infrastructure. If it errors out,
|
||||
|
|
Loading…
Reference in New Issue