On Tue, Oct 20, 2020 at 1:11 PM Simon Riggs <si...@2ndquadrant.com> wrote: > > On Mon, 19 Oct 2020 at 15:11, Dilip Kumar <dilipbal...@gmail.com> wrote: > > > We have an interface to pause the WAL replay (pg_wal_replay_pause) and > > to know whether the WAL replay pause is requested > > (pg_is_wal_replay_paused). But there is no way to know whether the > > recovery is actually paused or not. Actually, the recovery process > > might process an extra WAL before pausing the recovery. So does it > > make sense to provide a new interface to tell whether the recovery is > > actually paused or not? > > > > One solution could be that we convert the XLogCtlData->recoveryPause > > from bool to tri-state variable (0-> recovery not paused 1-> pause > > requested 2-> actually paused). > > > > Any opinion on this? > > Why would we want this? What problem are you trying to solve?
The requirement is to know the last replayed WAL on the standby so unless we can guarantee that the recovery is actually paused we can never get the safe last_replay_lsn value. > If we do care, why not fix pg_is_wal_replay_paused() so it responds as you > wish? Maybe we can also do that but pg_is_wal_replay_paused is an existing API and the behavior is to know whether the recovery paused is requested or not, So I am not sure is it a good idea to change the behavior of the existing API? -- Regards, Dilip Kumar EnterpriseDB: http://www.enterprisedb.com