Re: Copy function for logical replication slots - Mailing list pgsql-hackers

From Masahiko Sawada
Subject Re: Copy function for logical replication slots
Date
Msg-id CAD21AoAsPddVb3NeB3xLcj7XpYgQyX-eoafETxAjp481NsZ-yQ@mail.gmail.com
Whole thread Raw
In response to Re: Copy function for logical replication slots  (Michael Paquier <michael@paquier.xyz>)
Responses Re: Copy function for logical replication slots  (Masahiko Sawada <sawada.mshk@gmail.com>)
List pgsql-hackers
On Wed, Feb 20, 2019 at 12:26 PM Michael Paquier <michael@paquier.xyz> wrote:
>
> On Tue, Feb 19, 2019 at 05:09:33PM +0900, Masahiko Sawada wrote:
> > On Tue, Feb 19, 2019 at 1:28 AM Andres Freund <andres@anarazel.de> wrote:
> >> Well, I'd not thought we'd do it without acquiring the other slot. But
> >> that still seems to be easy enough to address, we just need to recheck
> >> whether the slot still exists (with the right name) the second time we
> >> acquire the spinlock?
> >
> > Yeah, I think that would work. The attached patch takes this
> > direction. Please review it.
>
> +     if (XLogRecPtrIsInvalid(copy_restart_lsn) ||
> +              copy_restart_lsn < src_restart_lsn ||
> +              src_islogical != copy_islogical ||
> +              strcmp(copy_name, NameStr(*src_name)) != 0)
> +              ereport(ERROR,
> +                              (errmsg("could not copy logical replication slot \"%s\"",
> +                               NameStr(*src_name)),
> +                               errdetail("The source replication slot has been dropped during copy")));
> +
> +      /* Install copied values again */
> +      SpinLockAcquire(&MyReplicationSlot->mutex);
>
> Worth worrying about this window not reduced to zero?  If the slot is
> dropped between both then the same issue would arise.

You meant that the destination slot (i.e. MyReplicationSlot) could be
dropped before acquiring its lock? Since we're holding the new slot it
cannot be dropped.

BTW, XLogRecPtrIsInvalid(copy_restart_lsn) ||  copy_restart_lsn <
src_restart_lsn is redundant, the former should be removed.

Regards,

--
Masahiko Sawada
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center


pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: libpq debug log
Next
From: Kyotaro HORIGUCHI
Date:
Subject: Re: Protect syscache from bloating with negative cache entries