On Tue, Apr 27, 2010 at 7:24 AM, Fujii Masao <masao.fu...@gmail.com> wrote: > On Tue, Apr 27, 2010 at 7:50 PM, Heikki Linnakangas > <heikki.linnakan...@enterprisedb.com> wrote: >>> It's OK in pg_start_backup(), but seems NG in pg_stop_backup() since >>> it waits until some WAL files have been archived by the archiver. No? >> >> Good point, that logic would need to be changed too. Should it simply >> return immediately if archive_mode=off? > > What if we wrongly set archive_mode to on and wal_mode to minimal? > I think that checking XLogArchivingActive() in pg_stop_backup() is > adequate.
That case should be rejected at primary startup. >>>>> + /* >>>>> + * For Hot Standby, the WAL must be generated with 'hot_standby' mode, >>>>> + * and we must have at least as many backend slots as the primary. >>>>> + */ >>>>> + if (InArchiveRecovery && XLogRequestRecoveryConnections) >>>>> + { >>>>> + if (ControlFile->wal_mode < WAL_MODE_HOT_STANDBY) >>>>> + ereport(ERROR, >>>>> + (errmsg("recovery connections cannot start because >>>>> wal_mode was not set to 'hot_standby' on the WAL source server"))); >>>>> >>>>> This seems to always prevent the server from doing an archive recovery >>>>> since wal_mode is expected to be WAL_MODE_ARCHIVE in that case. >>>> No, it doesn't prevent archive recovery. It only prevents hot standby if >>>> wal_mode was not 'hot_standby' in the master. I think you missed the "&& >>>> XLogRequestRecoveryConnections" condition above. >>> >>> Even if we do only archive recovery, XLogRequestRecoveryConnections >>> might be TRUE. Or we need to ensure that the recovery_connection is >>> FALSE in the postgresql.conf before starting archive recovery? >> >> Umm, yes, if you have recovery_connnections=on, it means you want hot >> standby. And for that you need wal_mode='hot_standby'. > > Since the default value of recovery_connections is TRUE, I think that > the trouble which I encountered would often happen. We should disable > recovery_connections by default? Furthermore should move it from > postgresql.conf to recovery.conf? > > On the other hand, I feel that recovery_connections=on in an archive > recovery is valid configuration *until* any read only connections are > requested. How about moving the above check to postmaster or backend? Or just not starting recovery connections, but still doing archive recovery? I think in this case a WARNING might be adequate. ...Robert -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers