Re: [HACKERS] make async slave to wait for lsn to be replayed - Mailing list pgsql-hackers

From Alexander Korotkov
Subject Re: [HACKERS] make async slave to wait for lsn to be replayed
Date
Msg-id CAPpHfdtGh9Gmx-O5qhcSGJmn5z7-yFb7NGqTrM2J94E14w8EOg@mail.gmail.com
Whole thread Raw
In response to Re: [HACKERS] make async slave to wait for lsn to be replayed  (Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>)
Responses Re: [HACKERS] make async slave to wait for lsn to be replayed  (Andy Fan <zhihuifan1213@163.com>)
Re: [HACKERS] make async slave to wait for lsn to be replayed  (Alvaro Herrera <alvherre@alvh.no-ip.org>)
List pgsql-hackers
On Mon, Apr 1, 2024 at 5:25 AM Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com> wrote:
On Mon, Apr 1, 2024 at 5:54 AM Alexander Korotkov <aekorotkov@gmail.com> wrote:
>
> > 9. To me the following query blocks even though I didn't mention timeout.
> > CALL pg_wal_replay_wait('0/fffffff');
>
> If your primary server is freshly initialized, you need to do quite
> data modifications to reach this LSN.

Right, but why pg_wal_replay_wait  blocks without a timeout? It must
return an error saying it can't reach the target LSN, no?

How can replica know this?  It doesn't look feasible to distinguish this situation from the situation when connection between primary and replica became slow.  I'd keep this simple.  We have pg_sleep_for() which waits for the specified time whatever it is.  And we have pg_wal_replay_wait() waits till replay lsn grows to the target whatever it is.  It's up to the user to specify the correct value.
 
Did you forget to attach the new patch?

Yes, here it is. 

------
Regards,
Alexander Korotkov 
Attachment

pgsql-hackers by date:

Previous
From: Bertrand Drouvot
Date:
Subject: Re: Introduce XID age and inactive timeout based replication slot invalidation
Next
From: Nisha Moond
Date:
Subject: Re: Synchronizing slots from primary to standby