Re: Fix slot synchronization with two_phase decoding enabled

Nisha Moond <nisha.moond412@gmail.com>

From: Nisha Moond <nisha.moond412@gmail.com>
To: shveta malik <shveta.malik@gmail.com>
Cc: Amit Kapila <amit.kapila16@gmail.com>, Masahiko Sawada <sawada.mshk@gmail.com>, "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-04-29T12:00:03Z
Lists: pgsql-hackers

Attachments

On Tue, Apr 29, 2025 at 2:51 PM shveta malik <shveta.malik@gmail.com> wrote:
>
> On Mon, Apr 28, 2025 at 4:33 PM Nisha Moond <nisha.moond412@gmail.com> wrote:
> >
> > Please find the v9 patch, addressing the above and all other comments as well.
> >
>
> Thanks for the patch.
>
> 1)
>
> +          The default is false. This option cannot be set together with
> +          <literal>two_phase</literal> when creating the slot. However, once
> +          the slot is created with <literal>two_phase=true</literal>, the
> +          <literal>failover</literal> can be set to true after the
> +          <literal>restart_lsn</literal> has advanced beyond its
> +          <literal>two_phase_at</literal> value
>
> As the user is not aware of two_phase_at, we shall change all the docs
> to have a more user friendly explanation.
>

Done.

> 2)
>  # Confirm that the invalidated slot has been dropped.
>  $standby1->wait_for_log(
> - qr/dropped replication slot "lsub1_slot" of database with OID
> [0-9]+/, $log_offset);
> + qr/dropped replication slot "lsub1_slot" of database with OID [0-9]+/,
> + $log_offset);
>
> I think this change is not needed.
>

The perltidy is auto-correcting it now, though it didn't for earlier
patches. I've kept the original for now.
~~~

Thanks for review, please find the updated patch v10.

--
Thanks,
Nisha

Commits

  1. Don't retreat slot's confirmed_flush LSN.

  2. Fix assertion failure during decoding from synced slots.

  3. Fix xmin advancement during fast_forward decoding.

  4. Fix slot synchronization for two_phase enabled slots.

  5. Again match pg_user_mappings to information_schema.user_mapping_options.