Hi I have reported a bug via PostgreSQL bug report form, but havent got any response so far. This might not be a bug, but a feature not implemented yet. I have created an suggestion to make a small addition to StartupXLOG.c to solve the issue.
Any suggestions? -- Leif Gunnar Erlandsen -------- Videresendt melding ------- Fra: l...@lako.no (mailto:l...@lako.no) Til: "Jeff Janes" <jeff.ja...@gmail.com (mailto:jeff.ja...@gmail.com?to=%22Jeff%20Janes%22%20<jeff.ja...@gmail.com>)>, pgsql-b...@lists.postgresql.org (mailto:pgsql-b...@lists.postgresql.org) Sendt: 12. januar 2019 kl. 08:40 Emne: Re: BUG #15589: Due to missing wal, restore ends prematurely and opens database for read/write "Jeff Janes" <jeff.ja...@gmail.com (mailto:jeff.ja...@gmail.com?to=%22Jeff%20Janes%22%20<jeff.ja...@gmail.com>)> skrev 11. januar 2019 kl. 15:03: On Fri, Jan 11, 2019 at 4:08 AM PG Bug reporting form <nore...@postgresql.org (mailto:nore...@postgresql.org)> wrote: PostgreSQL should have paused recovery also on the first scenario. Then I could have added missing wal and continued with restore. At the least, I think we should log an explicit WARNING if the WAL stream ends before the specified PIT is reached. The documentation for recovery.conf states that with recovery_target_time set recovery_target_action defaults to pause. Even if stop point is not reached, pause should be activated. After checking the source this might be solved with a small addition in StartupXLOG.c Someone with more experience with the source code should check this out. if (reachedStopPoint) { if (!reachedConsistency) ereport(FATAL, (errmsg("requested recovery stop point is before consistent recovery point"))); /* * This is the last point where we can restart recovery with a * new recovery target, if we shutdown and begin again. After * this, Resource Managers may choose to do permanent * corrective actions at end of recovery. */ switch (recoveryTargetAction) { case RECOVERY_TARGET_ACTION_SHUTDOWN: /* * exit with special return code to request shutdown * of postmaster. Log messages issued from * postmaster. */ proc_exit(3); case RECOVERY_TARGET_ACTION_PAUSE: SetRecoveryPause(true); recoveryPausesHere(); /* drop into promote */ case RECOVERY_TARGET_ACTION_PROMOTE: break; } /* Add these lines .... */ } else if (recoveryTarget == RECOVERY_TARGET_TIME) { /* * Stop point not reached but next WAL could not be read * Some explanation and warning should be logged */ switch (recoveryTargetAction) { case RECOVERY_TARGET_ACTION_PAUSE: SetRecoveryPause(true); recoveryPausesHere(); break; } } /* .... until here */ -- Leif