Schedule ShutdownXLOG() in single user mode using before_shmem_exit().

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
This commit is contained in:
Andres Freund 2021-03-26 10:52:14 -07:00
parent fa91d4c91f
commit a1bb3d5dbe
1 changed files with 5 additions and 1 deletions

View 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);
}
/*