mirror of
https://github.com/postgres/postgres.git
synced 2025-04-24 10:47:04 +03:00
Improve sequence and sense of messages from pg_stop_backup().
Now doesn't report it is waiting until it actually is waiting, plus message doesn't appear until at least 5 seconds wait, so we avoid reporting the wait before we've given the archiver a reasonable time to wake up and archive the file we just created earlier in the function. Also add new unconditional message to confirm safe completion. Now a normal, healthy execution does not report waiting at all, just safe completion.
This commit is contained in:
parent
2847de9df2
commit
d38603bd97
@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.399 2010/04/18 18:17:12 sriggs Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.400 2010/04/18 18:44:53 sriggs Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -8290,6 +8290,7 @@ pg_stop_backup(PG_FUNCTION_ARGS)
|
||||
int ich;
|
||||
int seconds_before_warning;
|
||||
int waits = 0;
|
||||
bool reported_waiting = false;
|
||||
|
||||
if (!superuser())
|
||||
ereport(ERROR,
|
||||
@ -8431,9 +8432,6 @@ pg_stop_backup(PG_FUNCTION_ARGS)
|
||||
BackupHistoryFileName(histfilename, ThisTimeLineID, _logId, _logSeg,
|
||||
startpoint.xrecoff % XLogSegSize);
|
||||
|
||||
ereport(NOTICE,
|
||||
(errmsg("pg_stop_backup cleanup done, waiting for required WAL segments to be archived")));
|
||||
|
||||
seconds_before_warning = 60;
|
||||
waits = 0;
|
||||
|
||||
@ -8442,6 +8440,13 @@ pg_stop_backup(PG_FUNCTION_ARGS)
|
||||
{
|
||||
CHECK_FOR_INTERRUPTS();
|
||||
|
||||
if (!reported_waiting && waits > 5)
|
||||
{
|
||||
ereport(NOTICE,
|
||||
(errmsg("pg_stop_backup cleanup done, waiting for required WAL segments to be archived")));
|
||||
reported_waiting = true;
|
||||
}
|
||||
|
||||
pg_usleep(1000000L);
|
||||
|
||||
if (++waits >= seconds_before_warning)
|
||||
@ -8456,6 +8461,9 @@ pg_stop_backup(PG_FUNCTION_ARGS)
|
||||
}
|
||||
}
|
||||
|
||||
ereport(NOTICE,
|
||||
(errmsg("pg_stop_backup complete, all required WAL segments have been archived")));
|
||||
|
||||
/*
|
||||
* We're done. As a convenience, return the ending WAL location.
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user