Send statistics collected during shutdown checkpoint to the stats collector.
authorFujii Masao <fujii@postgresql.org>
Fri, 12 Mar 2021 05:23:00 +0000 (14:23 +0900)
committerFujii Masao <fujii@postgresql.org>
Fri, 12 Mar 2021 05:23:00 +0000 (14:23 +0900)
When shutdown is requested, checkpointer performs checkpoint or
restartpoint, and updates the statistics, before it exits. But previously
checkpointer didn't send those statistics to the stats collector.

Shutdown checkpoint and restartpoint are treated as requested ones
instead of scheduled ones, so the number of them are counted in
pg_stat_bgwriter.checkpoints_req column.

Author: Masahiro Ikeda
Reviewed-by: Fujii Masao
Discussion: https://postgr.es/m/0509ad67b585a5b86a83d445dfa75392@oss.nttdata.com

src/backend/postmaster/checkpointer.c

index 57c4d5a5d94c979cb30fec4089df044e0e899903..5907a7befc503ecc9ad601997c614cc7db6692cc 100644 (file)
@@ -572,8 +572,19 @@ HandleCheckpointerInterrupts(void)
         * back to the sigsetjmp block above
         */
        ExitOnAnyError = true;
-       /* Close down the database */
+
+       /*
+        * Close down the database.
+        *
+        * Since ShutdownXLOG() creates restartpoint or checkpoint, and
+        * updates the statistics, increment the checkpoint request and send
+        * the statistics to the stats collector.
+        */
+       BgWriterStats.m_requested_checkpoints++;
        ShutdownXLOG(0, 0);
+       pgstat_send_bgwriter();
+       pgstat_report_wal();
+
        /* Normal exit from the checkpointer is here */
        proc_exit(0);           /* done */
    }