aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/test/modules/worker_spi/worker_spi.c52
1 files changed, 9 insertions, 43 deletions
diff --git a/src/test/modules/worker_spi/worker_spi.c b/src/test/modules/worker_spi/worker_spi.c
index 258237f9bfe..71f955206ad 100644
--- a/src/test/modules/worker_spi/worker_spi.c
+++ b/src/test/modules/worker_spi/worker_spi.c
@@ -25,6 +25,7 @@
/* These are always necessary for a bgworker */
#include "miscadmin.h"
#include "postmaster/bgworker.h"
+#include "postmaster/interrupt.h"
#include "storage/ipc.h"
#include "storage/latch.h"
#include "storage/lwlock.h"
@@ -48,10 +49,6 @@ PG_FUNCTION_INFO_V1(worker_spi_launch);
void _PG_init(void);
void worker_spi_main(Datum) pg_attribute_noreturn();
-/* flags set by signal handlers */
-static volatile sig_atomic_t got_sighup = false;
-static volatile sig_atomic_t got_sigterm = false;
-
/* GUC variables */
static int worker_spi_naptime = 10;
static int worker_spi_total_workers = 2;
@@ -65,38 +62,6 @@ typedef struct worktable
} worktable;
/*
- * Signal handler for SIGTERM
- * Set a flag to let the main loop to terminate, and set our latch to wake
- * it up.
- */
-static void
-worker_spi_sigterm(SIGNAL_ARGS)
-{
- int save_errno = errno;
-
- got_sigterm = true;
- SetLatch(MyLatch);
-
- errno = save_errno;
-}
-
-/*
- * Signal handler for SIGHUP
- * Set a flag to tell the main loop to reread the config file, and set
- * our latch to wake it up.
- */
-static void
-worker_spi_sighup(SIGNAL_ARGS)
-{
- int save_errno = errno;
-
- got_sighup = true;
- SetLatch(MyLatch);
-
- errno = save_errno;
-}
-
-/*
* Initialize workspace for a worker process: create the schema if it doesn't
* already exist.
*/
@@ -179,8 +144,8 @@ worker_spi_main(Datum main_arg)
table->name = pstrdup("counted");
/* Establish signal handlers before unblocking signals. */
- pqsignal(SIGHUP, worker_spi_sighup);
- pqsignal(SIGTERM, worker_spi_sigterm);
+ pqsignal(SIGHUP, SignalHandlerForConfigReload);
+ pqsignal(SIGTERM, die);
/* We're now ready to receive signals */
BackgroundWorkerUnblockSignals();
@@ -219,9 +184,10 @@ worker_spi_main(Datum main_arg)
table->name);
/*
- * Main loop: do this until the SIGTERM handler tells us to terminate
+ * Main loop: do this until SIGTERM is received and processed by
+ * ProcessInterrupts.
*/
- while (!got_sigterm)
+ for (;;)
{
int ret;
@@ -242,9 +208,9 @@ worker_spi_main(Datum main_arg)
/*
* In case of a SIGHUP, just reload the configuration.
*/
- if (got_sighup)
+ if (ConfigReloadPending)
{
- got_sighup = false;
+ ConfigReloadPending = false;
ProcessConfigFile(PGC_SIGHUP);
}
@@ -303,7 +269,7 @@ worker_spi_main(Datum main_arg)
pgstat_report_activity(STATE_IDLE, NULL);
}
- proc_exit(1);
+ /* Not reachable */
}
/*