]> granicus.if.org Git - postgresql/commit
More synchronous replication tweaks.
authorRobert Haas <rhaas@postgresql.org>
Thu, 10 Mar 2011 20:38:39 +0000 (15:38 -0500)
committerRobert Haas <rhaas@postgresql.org>
Thu, 10 Mar 2011 20:43:37 +0000 (15:43 -0500)
commitb8bb8dbf20e13087f8e57ff4c42e81776ae5e545
treed36a6d8bedd1eeece5ee980f116c12698bd37648
parente397d2ee6474865becb8f99ac28586736788f1f2
More synchronous replication tweaks.

SyncRepRequested() must check not only the value of the
synchronous_replication GUC but also whether max_wal_senders > 0.
Otherwise, we might end up waiting for sync rep even when there's no
possibility of a standby ever managing to connect.  There are some
existing cross-checks to prevent this, but they're not quite sufficient:
the user can start the server with max_wal_senders=0,
synchronous_standby_names='', and synchronous_replication=off and then
subsequent make synchronous_standby_names not empty using pg_ctl reload,
and then SET synchronous_standby=on, leading to an indefinite hang.

Along the way, rename the global variable for the synchronous_replication
GUC to match the name of the GUC itself, for clarity.

Report by Fujii Masao, though I didn't use his patch.
src/backend/replication/syncrep.c
src/backend/utils/misc/guc.c
src/include/replication/syncrep.h