diff options
Diffstat (limited to 'src/backend/postmaster/startup.c')
-rw-r--r-- | src/backend/postmaster/startup.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/backend/postmaster/startup.c b/src/backend/postmaster/startup.c index 9d964f17111..2fe41c01ad1 100644 --- a/src/backend/postmaster/startup.c +++ b/src/backend/postmaster/startup.c @@ -53,6 +53,9 @@ static void StartupProcSigUsr1Handler(SIGNAL_ARGS); static void StartupProcTriggerHandler(SIGNAL_ARGS); static void StartupProcSigHupHandler(SIGNAL_ARGS); +/* Callbacks */ +static void StartupProcExit(int code, Datum arg); + /* -------------------------------- * signal handler routines @@ -164,6 +167,19 @@ HandleStartupProcInterrupts(void) } +/* -------------------------------- + * signal handler routines + * -------------------------------- + */ +static void +StartupProcExit(int code, Datum arg) +{ + /* Shutdown the recovery environment */ + if (standbyState != STANDBY_DISABLED) + ShutdownRecoveryTransactionEnvironment(); +} + + /* ---------------------------------- * Startup Process main entry point * ---------------------------------- @@ -171,6 +187,9 @@ HandleStartupProcInterrupts(void) void StartupProcessMain(void) { + /* Arrange to clean up at startup process exit */ + on_shmem_exit(StartupProcExit, 0); + /* * Properly accept or ignore signals the postmaster might send us. */ |