| From: | Pavel Borisov <pashkin(dot)elfe(at)gmail(dot)com> | 
|---|---|
| To: | Alexander Korotkov <aekorotkov(at)gmail(dot)com> | 
| Cc: | Euler Taveira <euler(at)eulerto(dot)com>, Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, Kartyshov Ivan <i(dot)kartyshov(at)postgrespro(dot)ru>, Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com>, Peter Eisentraut <peter(at)eisentraut(dot)org>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, Dilip Kumar <dilipbalaut(at)gmail(dot)com>, Peter Smith <smithpb2250(at)gmail(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org | 
| Subject: | Re: [HACKERS] make async slave to wait for lsn to be replayed | 
| Date: | 2024-03-29 13:21:23 | 
| Message-ID: | CALT9ZEFbOJb8QtBp0yy-qn8pKxwf2=Unjh2R8WzemSxC5=DHWQ@mail.gmail.com | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-hackers | 
Hi, hackers!
On Fri, 29 Mar 2024 at 16:45, Alexander Korotkov <aekorotkov(at)gmail(dot)com>
wrote:
> Hi, Euler!
>
> On Fri, Mar 29, 2024 at 1:38 AM Euler Taveira <euler(at)eulerto(dot)com> wrote:
> > On Thu, Mar 28, 2024, at 9:39 AM, Alexander Korotkov wrote:
> >
> > Fixed along with other issues spotted by Alexander Lakhin.
> >
> >
> > [I didn't read the whole thread. I'm sorry if I missed something ...]
> >
> > You renamed the function in a previous version but let me suggest
> another one:
> > pg_wal_replay_wait. It uses the same pattern as the other recovery
> control
> > functions [1]. I think "for" doesn't add much for the function name and
> "lsn" is
> > used in functions that return an LSN (that's not the case here).
> >
> > postgres=# \df pg_wal_replay*
> > List of functions
> > -[ RECORD 1 ]-------+---------------------
> > Schema              | pg_catalog
> > Name                | pg_wal_replay_pause
> > Result data type    | void
> > Argument data types |
> > Type                | func
> > -[ RECORD 2 ]-------+---------------------
> > Schema              | pg_catalog
> > Name                | pg_wal_replay_resume
> > Result data type    | void
> > Argument data types |
> > Type                | func
>
> Makes sense to me.  I tried to make a new procedure name consistent
> with functions acquiring various WAL positions.  But you're right,
> it's better to be consistent with other functions controlling wal
> replay.
>
> > Regarding the arguments, I think the timeout should be bigint. There is
> at least
> > another function that implements a timeout that uses bigint.
> >
> > postgres=# \df pg_terminate_backend
> > List of functions
> > -[ RECORD 1 ]-------+--------------------------------------
> > Schema              | pg_catalog
> > Name                | pg_terminate_backend
> > Result data type    | boolean
> > Argument data types | pid integer, timeout bigint DEFAULT 0
> > Type                | func
> >
> > I also suggests that the timeout unit should be milliseconds, hence,
> using
> > bigint is perfectly fine for the timeout argument.
> >
> > +       <para>
> > +        Throws an ERROR if the target <acronym>lsn</acronym> was not
> replayed
> > +        on standby within given timeout.  Parameter
> <parameter>timeout</parameter>
> > +        is the time in seconds to wait for the
> <parameter>target_lsn</parameter>
> > +        replay. When <parameter>timeout</parameter> value equals to
> zero no
> > +        timeout is applied.
> > +       </para></entry>
>
> This generally makes sense, but I'm not sure about this.  The
> milliseconds timeout was used initially but received critics in [1].
>
I see in Postgres we already have different units for timeouts:
e.g in guc's:
wal_receiver_status_interval in seconds
tcp_keepalives_idle in seconds
commit_delay in microseconds
deadlock_timeout in milliseconds
max_standby_archive_delay in milliseconds
vacuum_cost_delay in milliseconds
autovacuum_vacuum_cost_delay in milliseconds
etc..
I haven't counted precisely, but I feel that milliseconds are the most
often used in both guc's and functions. So I'd propose using milliseconds
for the patch as it was proposed originally.
Regards,
Pavel Borisov
Supabase.
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Thomas Munro | 2024-03-29 13:36:08 | Re: BitmapHeapScan streaming read user and prelim refactoring | 
| Previous Message | Laurenz Albe | 2024-03-29 13:07:06 | Re: psql's FETCH_COUNT (cursor) is not being respected for CTEs |