From: | Pavel Borisov <pashkin(dot)elfe(at)gmail(dot)com> |
---|---|
To: | Alexander Korotkov <aekorotkov(at)gmail(dot)com> |
Cc: | Peter Eisentraut <peter(at)eisentraut(dot)org>, Michael Paquier <michael(at)paquier(dot)xyz>, pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | Re: pgsql: Implement pg_wal_replay_wait() stored procedure |
Date: | 2024-10-22 13:30:20 |
Message-ID: | CALT9ZEFX_9CF1y5NFMDBVM2uACWUCgsKDfCS0dNMTQ=G+iFD5g@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers pgsql-hackers |
Hi, Alexander!
On Tue, 22 Oct 2024 at 13:26, Alexander Korotkov <aekorotkov(at)gmail(dot)com>
wrote:
> On Wed, Oct 16, 2024 at 11:20 PM Alexander Korotkov
> <aekorotkov(at)gmail(dot)com> wrote:
> >
> > On Wed, Oct 16, 2024 at 10:35 PM Peter Eisentraut <peter(at)eisentraut(dot)org>
> wrote:
> > > On 02.09.24 01:55, Alexander Korotkov wrote:
> > > > On Mon, Sep 2, 2024 at 2:28 AM Michael Paquier <michael(at)paquier(dot)xyz>
> wrote:
> > > >> On Sun, Sep 01, 2024 at 10:35:27PM +0300, Alexander Korotkov wrote:
> > > >>> This path hasn't changes since the patch revision when it was a
> > > >>> utility command. I agree that this doesn't look like proper path
> for
> > > >>> stored procedure. But I don't think src/backend/utils/adt is
> > > >>> appropriate path either, because it's not really about data type.
> > > >>> pg_wal_replay_wait() looks a good neighbor for
> > > >>> pg_wal_replay_pause()/pg_wal_replay_resume() and other WAL-related
> > > >>> functions. So, what about moving it to src/backend/access/transam?
> > > >>
> > > >> Moving the new function to xlogfuncs.c while publishing
> > > >> WaitForLSNReplay() makes sense to me.
> > > >
> > > > Thank you for proposal. I like this.
> > > >
> > > > Could you, please, check the attached patch?
> > >
> > > We still have stuff in src/backend/commands/waitlsn.c that is nothing
> > > like a "command". You have moved some stuff elsewhere, but what are
> you
> > > planning to do with the rest?
> >
> > Thank you for spotting this another time. What about moving that
> > somewhere like src/backend/access/transam/xlogwait.c ?
>
> Implemented this as a separate patch (0001). Also rebased other
> pending patches on that. 0004 now revises header comment of
> xlogwait.c with new procedure signature.
>
I've looked at v5 of a patchset.
0001:
Looks completely ok.
0002:
As stated in latch.c
- WL_POSTMASTER_DEATH: Wait for postmaster to die
- WL_EXIT_ON_PM_DEATH: Exit immediately if the postmaster dies
* wakeEvents must include either WL_EXIT_ON_PM_DEATH for automatic exit
* if the postmaster dies or WL_POSTMASTER_DEATH for a flag set in the
* return value if the postmaster dies
It's not completely clear to me if these comments need some clarification
(not related to the patchset), or if we should look for WL_EXIT_ON_PM_DEATH
for immediately FATAL. Or waiting for postmaster to die on
WL_POSTMASTER_DEATH instead of just fatal immediately?
0003:
Besides refactor it looks that deleteLSNWaiter() is added
in WaitForLSNReplay. Maybe it's worth mentioning in the commit message.
Maybe refactoring for loop for assigning result variable and breaking a
loop instead of immediate return would look better and lead to natural call
of after the loop before returning.
0004:
Comment:
+ * Waits until recovery replays the target LSN with optional timeout.
Throw
+ * an error on failure.
may need mentioning "Unless no_error provided throws an error on failure"
Otherwise the patch looks good.
Regards,
Pavel Borisov
Supabase
From | Date | Subject | |
---|---|---|---|
Next Message | Pavel Borisov | 2024-10-22 13:32:51 | Re: pgsql: Implement pg_wal_replay_wait() stored procedure |
Previous Message | Alexander Korotkov | 2024-10-22 10:25:30 | pgsql: Make all Perl warnings fatal in 043_wal_replay_wait.pl |
From | Date | Subject | |
---|---|---|---|
Next Message | Pavel Borisov | 2024-10-22 13:32:51 | Re: pgsql: Implement pg_wal_replay_wait() stored procedure |
Previous Message | Aleksander Alekseev | 2024-10-22 13:27:30 | Re: [PATCH] Add array_reverse() function |