diff options
-rw-r--r-- | contrib/worker_spi/worker_spi.c | 6 | ||||
-rw-r--r-- | doc/src/sgml/bgworker.sgml | 13 | ||||
-rw-r--r-- | src/backend/postmaster/postmaster.c | 12 | ||||
-rw-r--r-- | src/include/postmaster/bgworker.h | 3 |
4 files changed, 7 insertions, 27 deletions
diff --git a/contrib/worker_spi/worker_spi.c b/contrib/worker_spi/worker_spi.c index 414721a70fe..84ac1b7730b 100644 --- a/contrib/worker_spi/worker_spi.c +++ b/contrib/worker_spi/worker_spi.c @@ -159,6 +159,10 @@ worker_spi_main(void *main_arg) worktable *table = (worktable *) main_arg; StringInfoData buf; + /* Establish signal handlers before unblocking signals. */ + pqsignal(SIGHUP, worker_spi_sighup); + pqsignal(SIGTERM, worker_spi_sigterm); + /* We're now ready to receive signals */ BackgroundWorkerUnblockSignals(); @@ -328,8 +332,6 @@ _PG_init(void) worker.bgw_start_time = BgWorkerStart_RecoveryFinished; worker.bgw_restart_time = BGW_NEVER_RESTART; worker.bgw_main = worker_spi_main; - worker.bgw_sighup = worker_spi_sighup; - worker.bgw_sigterm = worker_spi_sigterm; /* * Now fill in worker-specific data, and do the actual registrations. diff --git a/doc/src/sgml/bgworker.sgml b/doc/src/sgml/bgworker.sgml index b0dde7564d8..7d2ffd14fef 100644 --- a/doc/src/sgml/bgworker.sgml +++ b/doc/src/sgml/bgworker.sgml @@ -38,7 +38,6 @@ The structure <structname>BackgroundWorker</structname> is defined thus: <programlisting> typedef void (*bgworker_main_type)(void *main_arg); -typedef void (*bgworker_sighdlr_type)(SIGNAL_ARGS); typedef struct BackgroundWorker { char *bgw_name; @@ -47,8 +46,6 @@ typedef struct BackgroundWorker int bgw_restart_time; /* in seconds, or BGW_NEVER_RESTART */ bgworker_main_type bgw_main; void *bgw_main_arg; - bgworker_sighdlr_type bgw_sighup; - bgworker_sighdlr_type bgw_sigterm; } BackgroundWorker; </programlisting> </para> @@ -104,14 +101,6 @@ typedef struct BackgroundWorker passed at registration time. </para> - <para> - <structfield>bgw_sighup</structfield> and <structfield>bgw_sigterm</> are - pointers to functions that will be installed as signal handlers for the new - process. If <structfield>bgw_sighup</> is NULL, then <literal>SIG_IGN</> - is used; if <structfield>bgw_sigterm</> is NULL, a handler is installed that - will terminate the process after logging a suitable message. - </para> - <para>Once running, the process can connect to a database by calling <function>BackgroundWorkerInitializeConnection(<parameter>char *dbname</parameter>, <parameter>char *username</parameter>)</function>. This allows the process to run transactions and queries using the @@ -126,7 +115,7 @@ typedef struct BackgroundWorker <para> Signals are initially blocked when control reaches the <structfield>bgw_main</> function, and must be unblocked by it; this is to - allow the process to further customize its signal handlers, if necessary. + allow the process to customize its signal handlers, if necessary. Signals can be unblocked in the new process by calling <function>BackgroundWorkerUnblockSignals</> and blocked by calling <function>BackgroundWorkerBlockSignals</>. diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index ec2677380bf..1e41a0e75ec 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -5434,16 +5434,8 @@ do_start_bgworker(void) pqsignal(SIGFPE, SIG_IGN); } - /* SIGTERM and SIGHUP are configurable */ - if (worker->bgw_sigterm) - pqsignal(SIGTERM, worker->bgw_sigterm); - else - pqsignal(SIGTERM, bgworker_die); - - if (worker->bgw_sighup) - pqsignal(SIGHUP, worker->bgw_sighup); - else - pqsignal(SIGHUP, SIG_IGN); + pqsignal(SIGTERM, bgworker_die); + pqsignal(SIGHUP, SIG_IGN); pqsignal(SIGQUIT, bgworker_quickdie); InitializeTimeouts(); /* establishes SIGALRM handler */ diff --git a/src/include/postmaster/bgworker.h b/src/include/postmaster/bgworker.h index 53167057e9a..e91e344eb67 100644 --- a/src/include/postmaster/bgworker.h +++ b/src/include/postmaster/bgworker.h @@ -53,7 +53,6 @@ typedef void (*bgworker_main_type) (void *main_arg); -typedef void (*bgworker_sighdlr_type) (SIGNAL_ARGS); /* * Points in time at which a bgworker can request to be started @@ -76,8 +75,6 @@ typedef struct BackgroundWorker int bgw_restart_time; /* in seconds, or BGW_NEVER_RESTART */ bgworker_main_type bgw_main; void *bgw_main_arg; - bgworker_sighdlr_type bgw_sighup; - bgworker_sighdlr_type bgw_sigterm; } BackgroundWorker; /* Register a new bgworker */ |