Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Schedule ShutdownXLOG() in single user mode using before_shmem_exit().
authorAndres Freund <andres@anarazel.de>
Fri, 26 Mar 2021 17:52:14 +0000 (10:52 -0700)
committerAndres Freund <andres@anarazel.de>
Sat, 7 Aug 2021 02:10:32 +0000 (19:10 -0700)
Previously on_shmem_exit() was used. The upcoming shared memory stats patch
uses DSM segments to store stats, which can not be used after the
dsm_backend_shutdown() call in shmem_exit().  There does not seem to be any
reason to do ShutdownXLOG() via on_shmem_exit(), so change it.

Author: Andres Freund <andres@anarazel.de>
Discussion: https://postgr.es/m/20210405092914.mmxqe7j56lsjfsej@alap3.anarazel.de
Discussion: https://postgr.es/m/20210803023612.iziacxk5syn2r4ut@alap3.anarazel.de

src/backend/utils/init/postinit.c

index e37b86494e181a24b8afd96fac3a488be484ed65..87dc060b201551a492a1eb0b1b184a1c460dd2b0 100644 (file)
@@ -638,7 +638,11 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username,
        /* Reset CurrentResourceOwner to nothing for the moment */
        CurrentResourceOwner = NULL;
 
-       on_shmem_exit(ShutdownXLOG, 0);
+       /*
+        * Use before_shmem_exit() so that ShutdownXLOG() can rely on DSM
+        * segments etc to work (which in turn is required for pgstats).
+        */
+       before_shmem_exit(ShutdownXLOG, 0);
    }
 
    /*