On 2022/02/07 12:02, Kyotaro Horiguchi wrote:
- If any later checkpoint/restartpoint has been established, just skip
   remaining task then return false. (!chkpt_was_latest)
   (I'm not sure this can happen, though.)

- we update control file only when archive recovery is still ongoing.

This comment seems to conflict with what your PoC patch does. Because with the patch, 
ControlFile->checkPoint and ControlFile->checkPointCopy seem to be updated even 
when ControlFile->state != DB_IN_ARCHIVE_RECOVERY.

I agree with what your PoC patch does for now. When we're not in archive 
recovery state, checkpoint and REDO locations in pg_control should be updated 
but min recovery point should be reset to invalid one (which instruments that 
subsequent crash recovery should replay all available WAL files).

- Otherwise reset minRecoveryPoint then continue.

Do you have any thoughts or opinions?

Regarding chkpt_was_latest, whether the state is DB_IN_ARCHIVE_RECOVERY or not, if checkpoint and 
redo locations in pg_control are updated, IMO we don't need to skip the "remaining 
tasks". Since those locations are updated and subsequent crash recovery will start from that 
redo location, for example, ISTM that we can safely delete old WAL files prior to the redo location 
as the "remaining tasks". Thought?

Regards,

--
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION


Reply via email to