On Wed, Jul 28, 2021 at 5:03 PM Amul Sul <sula...@gmail.com> wrote: > > I was too worried about how I could miss that & after thinking more > about that, I realized that the operation for ArchiveRecoveryRequested > is never going to be skipped in the startup process and that never > left for the checkpoint process to do that later. That is the reason > that assert was added there. > > When ArchiveRecoveryRequested, the server will no longer be in > the wal prohibited mode, we implicitly change the state to > wal-permitted. Here is the snip from the 0003 patch: > > @@ -6614,13 +6629,30 @@ StartupXLOG(void) > (errmsg("starting archive recovery"))); > } > > - /* > - * Take ownership of the wakeup latch if we're going to sleep during > - * recovery. > - */ > if (ArchiveRecoveryRequested) > + { > + /* > + * Take ownership of the wakeup latch if we're going to sleep during > + * recovery. > + */ > OwnLatch(&XLogCtl->recoveryWakeupLatch); > > + /* > + * Since archive recovery is requested, we cannot be in a wal prohibited > + * state. > + */ > + if (ControlFile->wal_prohibited) > + { > + /* No need to hold ControlFileLock yet, we aren't up far enough */ > + ControlFile->wal_prohibited = false; > + ControlFile->time = (pg_time_t) time(NULL); > + UpdateControlFile(); > +
Is there some reason why we are forcing 'wal_prohibited' to off if we are doing archive recovery? It might have already been discussed, but I could not find it on a quick look into the thread. -- Regards, Dilip Kumar EnterpriseDB: http://www.enterprisedb.com