Refactoring postmaster's code to cleanup after child exit

From: Heikki Linnakangas <hlinnaka(at)iki(dot)fi>
To: "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Refactoring postmaster's code to cleanup after child exit
Date: 2024-07-06 19:01:44
Message-ID: 835232c0-a5f7-4f20-b95b-5b56ba57d741@iki.fi
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Reading through postmaster code, I spotted some refactoring
opportunities to make it slightly more readable.

Currently, when a child process exits, the postmaster first scans
through BackgroundWorkerList to see if it was a bgworker process. If not
found, it scans through the BackendList to see if it was a backend
process (which it really should be then). That feels a bit silly,
because every running background worker process also has an entry in
BackendList. There's a lot of duplication between
CleanupBackgroundWorker and CleanupBackend.

Before commit 8a02b3d732, we used to created Backend entries only for
background worker processes that connected to a database, not for other
background worker processes. I think that's why we have the code
structure we have. But now that we have a Backend entry for all bgworker
processes, it's more natural to have single function to deal with both
regular backends and bgworkers.

So I came up with the attached patches. This doesn't make any meaningful
user-visible changes, except for some incidental changes in log messages
(see commit message for details).

--
Heikki Linnakangas
Neon (https://neon.tech)

Attachment Content-Type Size
v1-0001-Fix-outdated-comment-all-running-bgworkers-are-in.patch text/x-patch 1.5 KB
v1-0002-Minor-refactoring-of-assign_backendlist_entry.patch text/x-patch 3.3 KB
v1-0003-Make-BackgroundWorkerList-doubly-linked.patch text/x-patch 13.1 KB
v1-0004-Refactor-code-to-handle-death-of-a-backend-or-bgw.patch text/x-patch 20.1 KB

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2024-07-06 19:03:01 Re: XML test error on Arch Linux
Previous Message Joseph Koshakow 2024-07-06 18:50:05 Re: Remove dependence on integer wrapping