Re: detecting binary backup in progress - Mailing list pgsql-hackers

From Andres Freund
Subject Re: detecting binary backup in progress
Date
Msg-id 20130531193632.GG4606@awork2.anarazel.de
Whole thread Raw
In response to Re: detecting binary backup in progress  (Heikki Linnakangas <hlinnakangas@vmware.com>)
Responses Re: detecting binary backup in progress  (Joe Conway <mail@joeconway.com>)
Re: detecting binary backup in progress  (Heikki Linnakangas <hlinnakangas@vmware.com>)
List pgsql-hackers
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



pgsql-hackers by date:

Previous
From: Joe Conway
Date:
Subject: Re: detecting binary backup in progress
Next
From: Josh Berkus
Date:
Subject: Re: removing PD_ALL_VISIBLE