Make sure MaxBackends is always set
Auxiliary and bootstrap processes weren't getting it, causing initdb to fail completely.
This commit is contained in:
parent
cdbc0ca48c
commit
dfbba2c86c
@ -899,13 +899,9 @@ PostmasterMain(int argc, char *argv[])
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Now that loadable modules have had their chance to register background
|
* Now that loadable modules have had their chance to register background
|
||||||
* workers, calculate MaxBackends. Add one for the autovacuum launcher.
|
* workers, calculate MaxBackends.
|
||||||
*/
|
*/
|
||||||
MaxBackends = MaxConnections + autovacuum_max_workers + 1 +
|
InitializeMaxBackends();
|
||||||
GetNumShmemAttachedBgworkers();
|
|
||||||
/* internal error because the values were all checked previously */
|
|
||||||
if (MaxBackends > MAX_BACKENDS)
|
|
||||||
elog(ERROR, "too many backends configured");
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Establish input sockets.
|
* Establish input sockets.
|
||||||
|
@ -421,6 +421,26 @@ pg_split_opts(char **argv, int *argcp, char *optstr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialize MaxBackends value from config options.
|
||||||
|
*
|
||||||
|
* This must be called after modules have had the chance to register background
|
||||||
|
* workers in shared_preload_libraries, and before shared memory size is
|
||||||
|
* determined.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
InitializeMaxBackends(void)
|
||||||
|
{
|
||||||
|
Assert(MaxBackends == 0);
|
||||||
|
|
||||||
|
/* the extra unit accounts for the autovacuum launcher */
|
||||||
|
MaxBackends = MaxConnections + autovacuum_max_workers + 1 +
|
||||||
|
GetNumShmemAttachedBgworkers();
|
||||||
|
|
||||||
|
/* internal error because the values were all checked previously */
|
||||||
|
if (MaxBackends > MAX_BACKENDS)
|
||||||
|
elog(ERROR, "too many backends configured");
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Early initialization of a backend (either standalone or under postmaster).
|
* Early initialization of a backend (either standalone or under postmaster).
|
||||||
@ -433,6 +453,8 @@ pg_split_opts(char **argv, int *argcp, char *optstr)
|
|||||||
void
|
void
|
||||||
BaseInit(void)
|
BaseInit(void)
|
||||||
{
|
{
|
||||||
|
InitializeMaxBackends();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Attach to shared memory and semaphores, and initialize our
|
* Attach to shared memory and semaphores, and initialize our
|
||||||
* input/output/debugging file descriptors.
|
* input/output/debugging file descriptors.
|
||||||
|
@ -394,6 +394,7 @@ extern AuxProcType MyAuxProcType;
|
|||||||
|
|
||||||
/* in utils/init/postinit.c */
|
/* in utils/init/postinit.c */
|
||||||
extern void pg_split_opts(char **argv, int *argcp, char *optstr);
|
extern void pg_split_opts(char **argv, int *argcp, char *optstr);
|
||||||
|
extern void InitializeMaxBackends(void);
|
||||||
extern void InitPostgres(const char *in_dbname, Oid dboid, const char *username,
|
extern void InitPostgres(const char *in_dbname, Oid dboid, const char *username,
|
||||||
char *out_dbname);
|
char *out_dbname);
|
||||||
extern void BaseInit(void);
|
extern void BaseInit(void);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user