Logger process and "LOG: could not close client or listen socket: Bad file descriptor"
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: Postgres hackers <pgsql-hackers@lists.postgresql.org>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>
Date: 2023-08-28T00:52:09Z
Lists: pgsql-hackers
Attachments
- syslogger-sockets.patch (text/x-diff) patch
Hi all, (Heikki in CC.) After b0bea38705b2, I have noticed that the syslogger is generating a lot of dummy LOG entries: 2023-08-28 09:40:52.565 JST [24554] LOG: could not close client or listen socket: Bad file descriptor The only reason why I have noticed this issue is because I enable the logging collector in my development scripts. Note that the pg_ctl test 004_logrotate.pl, the only one with logging_collector set, is equally able to reproduce the issue. The root of the problem is ClosePostmasterPorts() in syslogger.c, where we close the postmaster ports, but all of them are still set at 0, leading to these spurious logs. From what I can see, this is is a rather old issue, because ListenSocket[] is filled with PGINVALID_SOCKET *after* starting the syslogger. It seems to me that we should just initialize the array before starting the syslogger, so as we don't get these incorrect logs? Thoughts? Please see the attached. -- Michael
Commits
-
Initialize ListenSocket array earlier.
- 0c10240600ad 15.5 landed
- 3d895f95a020 14.10 landed
- a01e479e8483 13.13 landed
- 5f38ff3d0f65 16.0 landed
- 5fec3c870ec8 17.0 landed