RE: [PoC] pg_upgrade: allow to upgrade publisher node

Hayato Kuroda (Fujitsu) <kuroda.hayato@fujitsu.com>

From: "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>
To: 'Peter Smith' <smithpb2250@gmail.com>
Cc: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>, Amit Kapila <amit.kapila16@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Bruce Momjian <bruce@momjian.us>, Julien Rouhaud <rjuju123@gmail.com>, vignesh C <vignesh21@gmail.com>, Masahiko Sawada <sawada.mshk@gmail.com>, Dilip Kumar <dilipbalaut@gmail.com>
Date: 2023-09-15T03:15:12Z
Lists: pgsql-hackers
Dear Peter,

Thank you for reviewing! New patch is available in [1].

> 1.
>         Configure the servers for log shipping.  (You do not need to run
>         <function>pg_backup_start()</function> and
> <function>pg_backup_stop()</function>
>         or take a file system backup as the standbys are still synchronized
> -       with the primary.)  Replication slots are not copied and must
> -       be recreated.
> +       with the primary.) Only logical slots on the primary are copied to the
> +       new standby, and other other slots on the old standby must be recreated
> +       as they are not copied.
>        </para>
> 
> IMO this text still needs some minor changes like shown below, Anyway,
> there is a typo: /other other/
> 
> SUGGESTION
> Only logical slots on the primary are copied to the new standby, but
> other slots on the old standby are not copied so must be recreated
> manually.
>

Fixed.

> ======
> src/bin/pg_upgrade/server.c
> 
> 2.
> + *
> + * Use max_slot_wal_keep_size as -1 to prevent the WAL removal by the
> + * checkpointer process.  If WALs required by logical replication slots are
> + * removed, the slots are unusable.  The setting ensures that such WAL
> + * records have remained so that invalidation of slots would be avoided
> + * during the upgrade.
> 
> The comment already explained the reason for the setting is to prevent
> removing the needed WAL records, so I felt there is no need for the
> last sentence to repeat the same information.
> 
> BEFORE
> The setting ensures that such WAL records have remained so that
> invalidation of slots would be avoided during the upgrade.
> 
> SUGGESTION
> This setting prevents the invalidation of slots during the upgrade.

Fixed.

[1]: https://www.postgresql.org/message-id/TYAPR01MB5866D63A6460059DC661BF62F5F6A%40TYAPR01MB5866.jpnprd01.prod.outlook.com

Best Regards,
Hayato Kuroda
FUJITSU LIMITED

Commits

  1. Fix issues in binary_upgrade_logical_slot_has_caught_up().

  2. Fix a random failure in 003_logical_slots.pl.

  3. Fix a test in 003_logical_slots.

  4. Fix uninitialized slot array access during the upgrade.

  5. Fix the test 003_logical_slots.

  6. Commit b195e6d482 forgot to update meson.build.

  7. Use shorter file names in the upgrade logical slots test.

  8. Migrate logical slots to the new node during an upgrade.

  9. Flush logical slots to disk during a shutdown checkpoint if required.

  10. Prevent possibility of panics during shutdown checkpoint.