At Tue, 14 Jan 2020 21:13:51 +0100, Peter Eisentraut <peter.eisentr...@2ndquadrant.com> wrote in > On 2019-12-11 12:40, Leif Gunnar Erlandsen wrote: > > Adding patch written for 13dev from git > > "Michael Paquier" <mich...@paquier.xyz> skrev 1. desember 2019 > > kl. 03:08: > > > >> On Fri, Nov 22, 2019 at 11:26:59AM +0000, Leif Gunnar Erlandsen wrote: > >> > >>> No it does not. It works well to demonstrate its purpose though. > >>> And it might be to stop with FATAL would be more correct. > >> > >> This is still under active discussion. Please note that the latest > >> patch does not apply, so a rebase would be nice to have. I have moved > >> the patch to next CF, waiting on author. > > I reworked your patch a bit. I changed the outcome to be an error, as > was discussed. I also added tests and documentation. Please take a > look.
It doesn't show how far the last recovery actually reached. I don't think activating resource managers harms. Don't we check the not-reached condition *only* after the else block of the "if (record != NULL)" statement? > /* just have to read next record after CheckPoint */ > record = ReadRecord(xlogreader, InvalidXLogRecPtr, LOG, false); > } > > if (record != NULL) > { > ... > } > else > { > /* there are no WAL records following the checkpoint */ > ereport(LOG, > (errmsg("redo is not required"))); > } > + if (recoveryTarget != RECOVERY_TARGET_UNSET && !reachedStopPoint) .. recvoery_target_* is not cleared after startup. If a server crashed just after the last shutdown checkpoint, any recovery_target_* setting prevents the server from starting regardless of its value. > LOG: database system was not properly shut down; automatic recovery in > progress > LOG: invalid record length at 0/9000420: wanted 24, got 0 (recovery is skipped) > FATAL: recovery ended before configured recovery target was reached I think we should ignore the setting while crash recovery. Targeted recovery mode is documented as a feature of archive recovery. Perhaps ArchiveRecoveryRequested is needed in the condition. > if (ArchiveRecoveryRequested && > recoveryTarget != RECOVERY_TARGET_UNSET && !reachedStopPoint) regards. -- Kyotaro Horiguchi NTT Open Source Software Center