mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-30 17:01:17 +02:00
Initialize ListenSocket array earlier.
After commitb0bea38705
, 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 commit9a86f03b4e
in version 13, which moved the SysLogger_Start() call to before initializing ListenSockets. We just didn't notice until commitb0bea38705
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
8700851352
commit
0c10240600
@ -1157,6 +1157,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
|
||||||
*/
|
*/
|
||||||
@ -1191,15 +1202,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…
Reference in New Issue
Block a user