diff options
Diffstat (limited to 'src/backend/utils')
-rw-r--r-- | src/backend/utils/init/postinit.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c index 2c7f0f17641..5caa488e6d6 100644 --- a/src/backend/utils/init/postinit.c +++ b/src/backend/utils/init/postinit.c @@ -587,15 +587,14 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username, RelationCacheInitializePhase2(); /* - * Set up process-exit callback to do pre-shutdown cleanup. This has to - * be after we've initialized all the low-level modules like the buffer - * manager, because during shutdown this has to run before the low-level - * modules start to close down. On the other hand, we want it in place - * before we begin our first transaction --- if we fail during the - * initialization transaction, as is entirely possible, we need the - * AbortTransaction call to clean up. + * Set up process-exit callback to do pre-shutdown cleanup. This is the + * first before_shmem_exit callback we register; thus, this will be the + * last thing we do before low-level modules like the buffer manager begin + * to close down. We need to have this in place before we begin our first + * transaction --- if we fail during the initialization transaction, as is + * entirely possible, we need the AbortTransaction call to clean up. */ - on_shmem_exit(ShutdownPostgres, 0); + before_shmem_exit(ShutdownPostgres, 0); /* The autovacuum launcher is done here */ if (IsAutoVacuumLauncherProcess()) |