diff options
author | Simon Riggs <simon@2ndQuadrant.com> | 2011-07-19 03:40:03 +0100 |
---|---|---|
committer | Simon Riggs <simon@2ndQuadrant.com> | 2011-07-19 03:40:03 +0100 |
commit | 5286105800c7d5902f98f32e11b209c471c0c69c (patch) | |
tree | 59a5793296a3af901f864a16748e944edbd900ac /src/backend/postmaster/postmaster.c | |
parent | 3d4890c0c5d27dfdf7d1a8816d7bdcdba3c39d21 (diff) |
Cascading replication feature for streaming log-based replication.
Standby servers can now have WALSender processes, which can work with
either WALReceiver or archive_commands to pass data. Fully updated
docs, including new conceptual terms of sending server, upstream and
downstream servers. WALSenders terminated when promote to master.
Fujii Masao, review, rework and doc rewrite by Simon Riggs
Diffstat (limited to 'src/backend/postmaster/postmaster.c')
-rw-r--r-- | src/backend/postmaster/postmaster.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 9bcbf212f8c..412bc96465c 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -2317,6 +2317,26 @@ reaper(SIGNAL_ARGS) pmState = PM_RUN; /* + * Kill any walsenders to force the downstream standby(s) to + * reread the timeline history file, adjust their timelines and + * establish replication connections again. This is required + * because the timeline of cascading standby is not consistent + * with that of cascaded one just after failover. We LOG this + * message since we need to leave a record to explain this + * disconnection. + * + * XXX should avoid the need for disconnection. When we do, + * am_cascading_walsender should be replaced with RecoveryInProgress() + */ + if (max_wal_senders > 0) + { + ereport(LOG, + (errmsg("terminating walsender all processes to force cascaded" + "standby(s) to update timeline and reconnect"))); + SignalSomeChildren(SIGUSR2, BACKEND_TYPE_WALSND); + } + + /* * Crank up the background writer, if we didn't do that already * when we entered consistent recovery state. It doesn't matter * if this fails, we'll just try again later. |