diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 790e2c8714..0ff9af53fe 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -7610,7 +7610,10 @@ StartupXLOG(void) } else CreateCheckPoint(CHECKPOINT_END_OF_RECOVERY | CHECKPOINT_IMMEDIATE); + } + if (ArchiveRecoveryRequested) + { /* * And finally, execute the recovery_end_command, if any. */ @@ -7618,10 +7621,7 @@ StartupXLOG(void) ExecuteRecoveryCommand(recoveryEndCommand, "recovery_end_command", true); - } - if (ArchiveRecoveryRequested) - { /* * We switched to a new timeline. Clean up segments on the old * timeline. diff --git a/src/backend/access/transam/xlogarchive.c b/src/backend/access/transam/xlogarchive.c index 9a21f006d1..e14bcf8ea6 100644 --- a/src/backend/access/transam/xlogarchive.c +++ b/src/backend/access/transam/xlogarchive.c @@ -64,6 +64,13 @@ RestoreArchivedFile(char *path, const char *xlogfname, XLogRecPtr restartRedoPtr; TimeLineID restartTli; + /* + * Ignore restore_command when not in archive recovery (meaning + * we are in crash recovery). + */ + if (!ArchiveRecoveryRequested) + goto not_available; + /* In standby mode, restore_command might not be supplied */ if (recoveryRestoreCommand == NULL || strcmp(recoveryRestoreCommand, "") == 0) goto not_available;