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

Peter Eisentraut <peter.eisentraut@enterprisedb.com>

From: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
To: "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>, 'Julien Rouhaud' <rjuju123@gmail.com>
Cc: 'vignesh C' <vignesh21@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Amit Kapila <amit.kapila16@gmail.com>
Date: 2023-04-26T07:18:33Z
Lists: pgsql-hackers
On 24.04.23 14:03, Hayato Kuroda (Fujitsu) wrote:
>> so at least there's a good chance that they will still be at
>> shutdown, and will therefore send all the data to the subscribers? Having a
>> regression tests for that scenario would also be a good idea.  Having an
>> uncommitted write transaction should be enough to cover it.
> 
> I think background_psql() can be used for the purpose. Before doing pg_upgrade
> --check, a transaction is opened and kept. It means that the confirmed_flush has
> been not reached to the current WAL position yet, but the checking says OK
> because all slots are active.

A suggestion: You could write some/most tests against test_decoding 
rather than the publication/subscription system.  That way, you can 
avoid many timing issues in the tests and you can check more exactly 
that the slots produce the output you want.  This would also help ensure 
that this new facility works for other logical decoding output plugins 
besides the built-in one.




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.