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.
- Heikki
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers