mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-07 06:09:20 +02:00
Make crash recovery ignore restore_command and recovery_end_command settings.
In v11 or before, those settings could not take effect in crash recovery
because they are specified in recovery.conf and crash recovery always
starts without recovery.conf. But commit 2dedf4d9a8
integrated
recovery.conf into postgresql.conf and which unexpectedly allowed
those settings to take effect even in crash recovery. This is definitely
not good behavior.
To fix the issue, this commit makes crash recovery always ignore
restore_command and recovery_end_command settings.
Back-patch to v12 where the issue was added.
Author: Fujii Masao
Reviewed-by: Peter Eisentraut
Discussion: https://postgr.es/m/e445616d-023e-a268-8aa1-67b8b335340c@pgmasters.net
This commit is contained in:
parent
7ed1bcaed6
commit
fcf7f8d924
@ -7606,7 +7606,10 @@ StartupXLOG(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
CreateCheckPoint(CHECKPOINT_END_OF_RECOVERY | CHECKPOINT_IMMEDIATE);
|
CreateCheckPoint(CHECKPOINT_END_OF_RECOVERY | CHECKPOINT_IMMEDIATE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ArchiveRecoveryRequested)
|
||||||
|
{
|
||||||
/*
|
/*
|
||||||
* And finally, execute the recovery_end_command, if any.
|
* And finally, execute the recovery_end_command, if any.
|
||||||
*/
|
*/
|
||||||
@ -7614,10 +7617,7 @@ StartupXLOG(void)
|
|||||||
ExecuteRecoveryCommand(recoveryEndCommand,
|
ExecuteRecoveryCommand(recoveryEndCommand,
|
||||||
"recovery_end_command",
|
"recovery_end_command",
|
||||||
true);
|
true);
|
||||||
}
|
|
||||||
|
|
||||||
if (ArchiveRecoveryRequested)
|
|
||||||
{
|
|
||||||
/*
|
/*
|
||||||
* We switched to a new timeline. Clean up segments on the old
|
* We switched to a new timeline. Clean up segments on the old
|
||||||
* timeline.
|
* timeline.
|
||||||
|
@ -64,6 +64,13 @@ RestoreArchivedFile(char *path, const char *xlogfname,
|
|||||||
XLogRecPtr restartRedoPtr;
|
XLogRecPtr restartRedoPtr;
|
||||||
TimeLineID restartTli;
|
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 */
|
/* In standby mode, restore_command might not be supplied */
|
||||||
if (recoveryRestoreCommand == NULL || strcmp(recoveryRestoreCommand, "") == 0)
|
if (recoveryRestoreCommand == NULL || strcmp(recoveryRestoreCommand, "") == 0)
|
||||||
goto not_available;
|
goto not_available;
|
||||||
|
Loading…
Reference in New Issue
Block a user