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