postgres.git / summary / log / commit / refs

commit    ae205dfe6ced5305777919fc47371a452dfa803f
Author:   Michael Paquier <michael@paquier.xyz>
Date:     Wed Oct 02 06:54:16 2019 +0000

    Remove temporary WAL and history files at the end of archive recovery
    
    cbc55da has reworked the order of some actions at the end of archive
    recovery.  Unfortunately this overlooked the fact that the startup
    process needs to remove RECOVERYXLOG (for temporary WAL segment newly
    recovered from archives) and RECOVERYHISTORY (for temporary history
    file) at this step, leaving the files around even after recovery ended.
    
    Backpatch to 9.5, like the previous commit.
    
    Author: Sawada Masahiko
    Reviewed-by: Fujii Masao, Michael Paquier
    Discussion: https://postgr.es/m/CAD21AoBO_eDQub6zojFnWtnmutRBWvYf7=cW4Hsqj+U_R26w3Q@mail.gmail.com
    Backpatch-through: 9.5


src/backend/access/transam/xlog.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index a8a93bca345..8448b2078fa 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -5280,7 +5280,6 @@ readRecoveryCommandFile(void) static void exitArchiveRecovery(TimeLineID endTLI, XLogRecPtr endOfLog) { - char recoveryPath[MAXPGPATH]; char xlogfname[MAXFNAMELEN]; XLogSegNo endLogSegNo; XLogSegNo startLogSegNo; @@ -5360,17 +5359,6 @@ exitArchiveRecovery(TimeLineID endTLI, XLogRecPtr endOfLog) XLogFileName(xlogfname, ThisTimeLineID, startLogSegNo); XLogArchiveCleanup(xlogfname); - /* - * Since there might be a partial WAL segment named RECOVERYXLOG, get rid - * of it. - */ - snprintf(recoveryPath, MAXPGPATH, XLOGDIR "/RECOVERYXLOG"); - unlink(recoveryPath); /* ignore any error */ - - /* Get rid of any remaining recovered timeline-history file, too */ - snprintf(recoveryPath, MAXPGPATH, XLOGDIR "/RECOVERYHISTORY"); - unlink(recoveryPath); /* ignore any error */ - /* * Rename the config file out of the way, so that we don't accidentally * re-enter archive recovery mode in a subsequent crash. @@ -7159,6 +7147,7 @@ StartupXLOG(void) if (ArchiveRecoveryRequested) { char reason[200]; + char recoveryPath[MAXPGPATH]; Assert(InArchiveRecovery); @@ -7209,6 +7198,17 @@ StartupXLOG(void) */ writeTimeLineHistory(ThisTimeLineID, recoveryTargetTLI, EndRecPtr, reason); + + /* + * Since there might be a partial WAL segment named RECOVERYXLOG, get + * rid of it. + */ + snprintf(recoveryPath, MAXPGPATH, XLOGDIR "/RECOVERYXLOG"); + unlink(recoveryPath); /* ignore any error */ + + /* Get rid of any remaining recovered timeline-history file, too */ + snprintf(recoveryPath, MAXPGPATH, XLOGDIR "/RECOVERYHISTORY"); + unlink(recoveryPath); /* ignore any error */ } /* Save the selected TimeLineID in shared memory, too */ [parent: 0997cee82e72]