diff options
| author | Peter Eisentraut | 2017-06-02 18:46:00 +0000 |
|---|---|---|
| committer | Peter Eisentraut | 2017-06-02 18:49:23 +0000 |
| commit | 9fcf670c2efdf31233d429f557ab77937f0f1e6a (patch) | |
| tree | 88653233cc978f0764fec508d85fc0a3c99ccaa8 /src/include | |
| parent | acbd8375e954774181b673a31b814e9d46f436a5 (diff) | |
Fix signal handling in logical replication workers
The logical replication worker processes now use the normal die()
handler for SIGTERM and CHECK_FOR_INTERRUPTS() instead of custom code.
One problem before was that the apply worker would not exit promptly
when a subscription was dropped, which could lead to deadlocks.
Author: Petr Jelinek <petr.jelinek@2ndquadrant.com>
Reported-by: Masahiko Sawada <sawada.mshk@gmail.com>
Diffstat (limited to 'src/include')
| -rw-r--r-- | src/include/replication/logicalworker.h | 2 | ||||
| -rw-r--r-- | src/include/replication/worker_internal.h | 4 |
2 files changed, 2 insertions, 4 deletions
diff --git a/src/include/replication/logicalworker.h b/src/include/replication/logicalworker.h index 3e0affa190b..5877a930f68 100644 --- a/src/include/replication/logicalworker.h +++ b/src/include/replication/logicalworker.h @@ -14,4 +14,6 @@ extern void ApplyWorkerMain(Datum main_arg); +extern bool IsLogicalWorker(void); + #endif /* LOGICALWORKER_H */ diff --git a/src/include/replication/worker_internal.h b/src/include/replication/worker_internal.h index 0654461305b..2bfff5c1205 100644 --- a/src/include/replication/worker_internal.h +++ b/src/include/replication/worker_internal.h @@ -67,8 +67,6 @@ extern Subscription *MySubscription; extern LogicalRepWorker *MyLogicalRepWorker; extern bool in_remote_transaction; -extern volatile sig_atomic_t got_SIGHUP; -extern volatile sig_atomic_t got_SIGTERM; extern void logicalrep_worker_attach(int slot); extern LogicalRepWorker *logicalrep_worker_find(Oid subid, Oid relid, @@ -81,8 +79,6 @@ extern void logicalrep_worker_wakeup_ptr(LogicalRepWorker *worker); extern int logicalrep_sync_worker_count(Oid subid); -extern void logicalrep_worker_sighup(SIGNAL_ARGS); -extern void logicalrep_worker_sigterm(SIGNAL_ARGS); extern char *LogicalRepSyncTableStart(XLogRecPtr *origin_startpos); void process_syncing_tables(XLogRecPtr current_lsn); void invalidate_syncing_table_states(Datum arg, int cacheid, |
