On 2013-05-31 22:29:45 +0300, Heikki Linnakangas wrote: > On 31.05.2013 21:41, Joe Conway wrote: > >On 05/31/2013 10:46 AM, Heikki Linnakangas wrote: > >>On 31.05.2013 20:38, Joe Conway wrote: > >>>I can check for the presence of $PGDATA/backup_label in order to > >>>detect a backup in progress (i.e. pg_start_backup() has been run > >>>and pg_stop_backup() has not yet been run). > >>> > >>>However there is a period of time after pg_start_backup() is > >>>first executed to when it completes, during which backup_label > >>>file does not exist yet, but the backup has essentially been > >>>started. Is there any way to detect this state? > >> > >>What are you trying to accomplish? Even if you eliminate that > >>window, it's always possible that a backup starts just after you've > >>checked that there is no backup in progress. > > > >We can lay down a lockfile before checking for backup in progress, and > >the script that starts the backup can check for the lockfile before > >doing anything. There is still a race-window, but I want to minimize > >it. pg_is_in_backup() mentioned nearby on this thread will help close > >the gap. > > Note that pg_is_in_backup() just checks for presence of > $PGDATA/backup_label. Also note that pg_basebackup doesn't create > backup_label in the server. It's included in the backup that's sent to the > client, but it's never written to disk in the server. So checking for > backup_label manually or with pg_is_in_backup() will return false even if > pg_basebackup is running.
Whoa. You are right, but I'd call that a bug. I don't understand why we aren't just checking XLogCtl->Insert.(nonExclusiveBackups||exlusiveBackup)? I vote for changing this before we release pg_is_in_backup(). Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers