Improve comment about dropped entries in pgstat.c
authorMichael Paquier <[email protected]>
Mon, 9 Dec 2024 05:35:39 +0000 (14:35 +0900)
committerMichael Paquier <[email protected]>
Mon, 9 Dec 2024 05:35:39 +0000 (14:35 +0900)
pgstat_write_statsfile() discards any entries marked as dropped from
being written to the stats file at shutdown, and also included an
assertion based on the same condition.

The intention of the assertion is to track that no pgstats entries
should be left around as terminating backends should drop any entries
they still hold references on before the stats file is written by the
checkpointer, and it not worth taking down the server in this case if
there is a bug making that possible.

Let's improve the comment of this area to document clearly what's
intended.

Based on a discussion with Bertrand Drouvot and Anton A. Melnikov.

Author: Bertrand Drouvot
Discussion: https://postgr.es/m/a13e8cdf-b97a-4ecb-8f42-aaa367974e29@postgrespro.ru
Back-through: 15

src/backend/utils/activity/pgstat.c

index 6f8d237826603e64e0c0a34228c873b8cc5e081b..18b7d9b47d6cbc298c10d8babc39a0c4549f6762 100644 (file)
@@ -1655,7 +1655,15 @@ pgstat_write_statsfile(XLogRecPtr redo)
 
        CHECK_FOR_INTERRUPTS();
 
-       /* we may have some "dropped" entries not yet removed, skip them */
+       /*
+        * We should not see any "dropped" entries when writing the stats
+        * file, as all backends and auxiliary processes should have cleaned
+        * up their references before they terminated.
+        *
+        * However, since we are already shutting down, it is not worth
+        * crashing the server over any potential cleanup issues, so we simply
+        * skip such entries if encountered.
+        */
        Assert(!ps->dropped);
        if (ps->dropped)
            continue;