On Mon, Mar 7, 2011 at 5:27 PM, Fujii Masao <masao.fu...@gmail.com> wrote: > On Mon, Mar 7, 2011 at 7:51 AM, Simon Riggs <si...@2ndquadrant.com> wrote: >> Efficient transaction-controlled synchronous replication. >> If a standby is broadcasting reply messages and we have named >> one or more standbys in synchronous_standby_names then allow >> users who set synchronous_replication to wait for commit, which >> then provides strict data integrity guarantees. Design avoids >> sending and receiving transaction state information so minimises >> bookkeeping overheads. We synchronize with the highest priority >> standby that is connected and ready to synchronize. Other standbys >> can be defined to takeover in case of standby failure. >> >> This version has very strict behaviour; more relaxed options >> may be added at a later date. > > Pretty cool! I'd appreciate very much your efforts and contributions. > > And,, I found one bug ;) You seem to have wrongly removed the check > of max_wal_senders in SyncRepWaitForLSN. This can make the > backend wait for replication even if max_wal_senders = 0. I could produce > this problematic situation in my machine. The attached patch fixes this > problem.
if (strlen(SyncRepStandbyNames) > 0 && max_wal_senders == 0) ereport(ERROR, (errmsg("Synchronous replication requires WAL streaming (max_wal_senders > 0)"))); The above check should be required also after pg_ctl reload since synchronous_standby_names can be changed by SIGHUP? Or how about just removing that? If the patch I submitted is committed,empty synchronous_standby_names and max_wal_senders = 0 settings is no longer unsafe. Regards, -- Fujii Masao NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers