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) 1996-2010, PostgreSQL Global Development Group
|
||||||
* Portions Copyright (c) 1994, Regents of the University of California
|
* 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 ich;
|
||||||
int seconds_before_warning;
|
int seconds_before_warning;
|
||||||
int waits = 0;
|
int waits = 0;
|
||||||
|
bool reported_waiting = false;
|
||||||
|
|
||||||
if (!superuser())
|
if (!superuser())
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
@ -8431,9 +8432,6 @@ pg_stop_backup(PG_FUNCTION_ARGS)
|
|||||||
BackupHistoryFileName(histfilename, ThisTimeLineID, _logId, _logSeg,
|
BackupHistoryFileName(histfilename, ThisTimeLineID, _logId, _logSeg,
|
||||||
startpoint.xrecoff % XLogSegSize);
|
startpoint.xrecoff % XLogSegSize);
|
||||||
|
|
||||||
ereport(NOTICE,
|
|
||||||
(errmsg("pg_stop_backup cleanup done, waiting for required WAL segments to be archived")));
|
|
||||||
|
|
||||||
seconds_before_warning = 60;
|
seconds_before_warning = 60;
|
||||||
waits = 0;
|
waits = 0;
|
||||||
|
|
||||||
@ -8442,6 +8440,13 @@ pg_stop_backup(PG_FUNCTION_ARGS)
|
|||||||
{
|
{
|
||||||
CHECK_FOR_INTERRUPTS();
|
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);
|
pg_usleep(1000000L);
|
||||||
|
|
||||||
if (++waits >= seconds_before_warning)
|
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.
|
* We're done. As a convenience, return the ending WAL location.
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user