commit b898b351e074fb3713c9ce5543b1da727239b7fe Author: Masahiko Sawada Date: Mon Apr 17 17:38:06 2017 +0900 Register shmem_exit function to reset LogicalRepCtx->launcher_pid. diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c index 8a8dfe8..2e4275d 100644 --- a/src/backend/replication/logical/launcher.c +++ b/src/backend/replication/logical/launcher.c @@ -73,6 +73,7 @@ typedef struct LogicalRepCtxStruct LogicalRepCtxStruct *LogicalRepCtx; static void ApplyLauncherWakeup(void); +static void logicalrep_launcher_onexit(int code, Datum arg); static void logicalrep_worker_onexit(int code, Datum arg); static void logicalrep_worker_detach(void); @@ -481,6 +482,17 @@ logicalrep_worker_detach(void) } /* + * Cleanup function for logical replication launcher. + * + * Called on logical replication launcher exit. + */ +static void +logicalrep_launcher_onexit(int code, Datum arg) +{ + LogicalRepCtx->launcher_pid = 0; +} + +/* * Cleanup function. * * Called on logical replication worker exit. @@ -656,6 +668,8 @@ ApplyLauncherMain(Datum main_arg) ereport(DEBUG1, (errmsg("logical replication launcher started"))); + before_shmem_exit(logicalrep_launcher_onexit, (Datum) 0); + /* Establish signal handlers. */ pqsignal(SIGHUP, logicalrep_worker_sighup); pqsignal(SIGTERM, logicalrep_worker_sigterm);