Re: Refactoring postmaster's code to cleanup after child exit
Heikki Linnakangas <hlinnaka@iki.fi>
On 15/02/2026 10:11, Michael Banck wrote:
> On Tue, Oct 08, 2024 at 12:55:00AM +0300, Heikki Linnakangas wrote:
>> In the meanwhile, here is a one more version of the test patches, with a
>> SKIP that checks that IO::Socket::UNIX works.
>
> I've only realized recently, but those postmaster tap tests have been
> failing during Debian package build (see e.g. [0]) on hurd-i386/amd64 with
>
> |send: Cannot determine peer address at t/002_connection_limits.pl line 136.
>
> This wasn't widely noticed because both architectures are on the (not
> small) list of arches where test suite failures are ignored[1] but I
> think nowadays it is the only (or one of the very few) remaining
> issue(s). I encountered it now when I tried to turn on
> --enable-tap-tests on fruitcrow.
>
> The Perl code run through strace shows it runs connect(), then
> getpeername() and then sendto(), as seen here[2]. However, getpeername()
> on Unix sockets is not implemented on the Hurd yet[3] (granted, FSVO
> "yet", the issue is 20 years old). I've opened an issue in Perl asking
> to work around this here: https://github.com/Perl/perl5/issues/24195
>
> Would something like the attached be acceptable in the interim to have
> this test be skipped on the Hurd as well?
Hmm, so is the "$sock->send('foo');" actually necessary, if the error
occurs on getpeername() already? Where does the getpeername() call come
from?
It would be nice to silence that failure one way or another. If we go
with this approach, would need a comment at least to explain it.
It seems a little awkward to send garbage to the server for this. Could
we replace the send() with a non-blocking recv() or something?
- Heikki
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix test name and username used in failed connection attempts
- 2a943afcff44 18.0 landed
-
tests: Don't fail due to high default timeout in postmaster/003_start_stop
- b48832cddbf5 18.0 landed
-
tests: Fix race condition in postmaster/002_connection_limits
- 71d1ed6fe129 18.0 landed
-
Pass MyPMChildSlot as an explicit argument to child process
- 5b007868577a 18.0 landed
-
Assign a child slot to every postmaster child process
- a78af0427015 18.0 landed
-
Kill dead-end children when there's nothing else left
- bb861414fea3 18.0 landed
-
Replace postmaster.c's own backend type codes with BackendType
- 18d67a8d7d30 18.0 landed
-
Use an shmem_exit callback to remove backend from PMChildFlags on exit
- 2bbc261ddbdf 18.0 landed
-
Add test for dead-end backends
- 85ec945b7880 18.0 landed
-
Add test for connection limits
- 6a1d0d470e84 18.0 landed
-
Fix garbled process name on backend crash
- 56d23855c864 18.0 landed
-
Consolidate postmaster code to launch background processes
- 3354f85284dc 18.0 landed
-
Fix comment on processes being kept over a restart
- a79ed10e6c6b 18.0 landed
-
Refactor code to handle death of a backend or bgworker in postmaster
- 28a520c0b773 18.0 landed
-
Make BackgroundWorkerList doubly-linked
- b43100fa71d7 18.0 landed
-
Minor refactoring of assign_backendlist_entry()
- 63bef4df975c 18.0 landed
-
Fix outdated comment; all running bgworkers are in BackendList
- ef4c35b4166e 18.0 landed
-
Allow building with MSVC and Strawberry perl
- 341f4e002d46 16.0 cited
-
Fix rare failure in LDAP tests.
- f44b9b625bed 14.0 cited
-
Allow notifications to bgworkers without database connections.
- 8a02b3d732cf 9.6.0 cited