mirror of
https://github.com/postgres/postgres.git
synced 2025-06-04 00:02:37 -04:00
Initialize ListenSocket array earlier.
After commit b0bea38705, syslogger prints 63 warnings about failing to close a listen socket at postmaster startup. That's because the syslogger process forks before the ListenSockets array is initialized, so ClosePostmasterPorts() calls "close(0)" 64 times. The first call succeeds, because fd 0 is stdin. This has been like this since commit 9a86f03b4e in version 13, which moved the SysLogger_Start() call to before initializing ListenSockets. We just didn't notice until commit b0bea38705 added the LOG message. Reported by Michael Paquier and Jeff Janes. Author: Michael Paquier Discussion: https://www.postgresql.org/message-id/ZOvvuQe0rdj2slA9%40paquier.xyz Discussion: https://www.postgresql.org/message-id/ZO0fgDwVw2SUJiZx@paquier.xyz#482670177eb4eaf4c9f03c1eed963e5f Backpatch-through: 13
This commit is contained in:
parent
d94dadcc50
commit
5f38ff3d0f
@ -1143,6 +1143,17 @@ PostmasterMain(int argc, char *argv[])
|
|||||||
errmsg("could not remove file \"%s\": %m",
|
errmsg("could not remove file \"%s\": %m",
|
||||||
LOG_METAINFO_DATAFILE)));
|
LOG_METAINFO_DATAFILE)));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialize input sockets.
|
||||||
|
*
|
||||||
|
* Mark them all closed, and set up an on_proc_exit function that's
|
||||||
|
* charged with closing the sockets again at postmaster shutdown.
|
||||||
|
*/
|
||||||
|
for (i = 0; i < MAXLISTEN; i++)
|
||||||
|
ListenSocket[i] = PGINVALID_SOCKET;
|
||||||
|
|
||||||
|
on_proc_exit(CloseServerPorts, 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If enabled, start up syslogger collection subprocess
|
* If enabled, start up syslogger collection subprocess
|
||||||
*/
|
*/
|
||||||
@ -1177,15 +1188,7 @@ PostmasterMain(int argc, char *argv[])
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Establish input sockets.
|
* Establish input sockets.
|
||||||
*
|
|
||||||
* First, mark them all closed, and set up an on_proc_exit function that's
|
|
||||||
* charged with closing the sockets again at postmaster shutdown.
|
|
||||||
*/
|
*/
|
||||||
for (i = 0; i < MAXLISTEN; i++)
|
|
||||||
ListenSocket[i] = PGINVALID_SOCKET;
|
|
||||||
|
|
||||||
on_proc_exit(CloseServerPorts, 0);
|
|
||||||
|
|
||||||
if (ListenAddresses)
|
if (ListenAddresses)
|
||||||
{
|
{
|
||||||
char *rawstring;
|
char *rawstring;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user