process startup: Centralize pgwin32_signal_initialize() calls.
For one, the existing location lead to somewhat awkward code in main(). For another, the new location is easier to understand anyway. Author: Andres Freund <andres@anarazel.de> Reviewed-By: Kyotaro Horiguchi <horikyota.ntt@gmail.com> Reviewed-By: Robert Haas <robertmhaas@gmail.com> Discussion: https://postgr.es/m/20210802164124.ufo5buo4apl6yuvs@alap3.anarazel.de
This commit is contained in:
parent
f8dd4ecb0b
commit
07bf378509
@ -181,35 +181,24 @@ main(int argc, char *argv[])
|
|||||||
* Dispatch to one of various subprograms depending on first argument.
|
* Dispatch to one of various subprograms depending on first argument.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef EXEC_BACKEND
|
|
||||||
if (argc > 1 && strncmp(argv[1], "--fork", 6) == 0)
|
|
||||||
SubPostmasterMain(argc, argv); /* does not return */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Start our win32 signal implementation
|
|
||||||
*
|
|
||||||
* SubPostmasterMain() will do this for itself, but the remaining modes
|
|
||||||
* need it here
|
|
||||||
*/
|
|
||||||
pgwin32_signal_initialize();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (argc > 1 && strcmp(argv[1], "--check") == 0)
|
if (argc > 1 && strcmp(argv[1], "--check") == 0)
|
||||||
BootstrapModeMain(argc, argv, true);
|
BootstrapModeMain(argc, argv, true);
|
||||||
else if (argc > 1 && strcmp(argv[1], "--boot") == 0)
|
else if (argc > 1 && strcmp(argv[1], "--boot") == 0)
|
||||||
BootstrapModeMain(argc, argv, false);
|
BootstrapModeMain(argc, argv, false);
|
||||||
|
#ifdef EXEC_BACKEND
|
||||||
|
else if (argc > 1 && strncmp(argv[1], "--fork", 6) == 0)
|
||||||
|
SubPostmasterMain(argc, argv);
|
||||||
|
#endif
|
||||||
else if (argc > 1 && strcmp(argv[1], "--describe-config") == 0)
|
else if (argc > 1 && strcmp(argv[1], "--describe-config") == 0)
|
||||||
GucInfoMain(); /* does not return */
|
GucInfoMain();
|
||||||
else if (argc > 1 && strcmp(argv[1], "--single") == 0)
|
else if (argc > 1 && strcmp(argv[1], "--single") == 0)
|
||||||
PostgresMain(argc, argv,
|
PostgresMain(argc, argv,
|
||||||
NULL, /* no dbname */
|
NULL, /* no dbname */
|
||||||
strdup(get_user_name_or_exit(progname))); /* does not return */
|
strdup(get_user_name_or_exit(progname)));
|
||||||
else
|
else
|
||||||
PostmasterMain(argc, argv); /* does not return */
|
PostmasterMain(argc, argv);
|
||||||
abort(); /* should not get here */
|
/* the functions above should not return */
|
||||||
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -4905,15 +4905,6 @@ SubPostmasterMain(int argc, char *argv[])
|
|||||||
/* Close the postmaster's sockets (as soon as we know them) */
|
/* Close the postmaster's sockets (as soon as we know them) */
|
||||||
ClosePostmasterPorts(strcmp(argv[1], "--forklog") == 0);
|
ClosePostmasterPorts(strcmp(argv[1], "--forklog") == 0);
|
||||||
|
|
||||||
/*
|
|
||||||
* Start our win32 signal implementation. This has to be done after we
|
|
||||||
* read the backend variables, because we need to pick up the signal pipe
|
|
||||||
* from the parent process.
|
|
||||||
*/
|
|
||||||
#ifdef WIN32
|
|
||||||
pgwin32_signal_initialize();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Setup as postmaster child */
|
/* Setup as postmaster child */
|
||||||
InitPostmasterChild();
|
InitPostmasterChild();
|
||||||
|
|
||||||
|
@ -87,13 +87,23 @@ bool IgnoreSystemIndexes = false;
|
|||||||
/*
|
/*
|
||||||
* Initialize the basic environment for a postmaster child
|
* Initialize the basic environment for a postmaster child
|
||||||
*
|
*
|
||||||
* Should be called as early as possible after the child's startup.
|
* Should be called as early as possible after the child's startup. However,
|
||||||
|
* on EXEC_BACKEND builds it does need to be after read_backend_variables().
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
InitPostmasterChild(void)
|
InitPostmasterChild(void)
|
||||||
{
|
{
|
||||||
IsUnderPostmaster = true; /* we are a postmaster subprocess now */
|
IsUnderPostmaster = true; /* we are a postmaster subprocess now */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Start our win32 signal implementation. This has to be done after we
|
||||||
|
* read the backend variables, because we need to pick up the signal pipe
|
||||||
|
* from the parent process.
|
||||||
|
*/
|
||||||
|
#ifdef WIN32
|
||||||
|
pgwin32_signal_initialize();
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set reference point for stack-depth checking. We re-do that even in the
|
* Set reference point for stack-depth checking. We re-do that even in the
|
||||||
* !EXEC_BACKEND case, because there are some edge cases where processes
|
* !EXEC_BACKEND case, because there are some edge cases where processes
|
||||||
@ -166,6 +176,13 @@ InitStandaloneProcess(const char *argv0)
|
|||||||
{
|
{
|
||||||
Assert(!IsPostmasterEnvironment);
|
Assert(!IsPostmasterEnvironment);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Start our win32 signal implementation
|
||||||
|
*/
|
||||||
|
#ifdef WIN32
|
||||||
|
pgwin32_signal_initialize();
|
||||||
|
#endif
|
||||||
|
|
||||||
InitProcessGlobals();
|
InitProcessGlobals();
|
||||||
|
|
||||||
/* Initialize process-local latch support */
|
/* Initialize process-local latch support */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user