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: 'Thomas Munro' <thomas.munro@gmail.com>, 'Alexander Lakhin' <exclusion@gmail.com>
Cc: 'vignesh C' <vignesh21@gmail.com>, 'Masahiko Sawada' <sawada.mshk@gmail.com>, "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>, 'Peter Smith' <smithpb2250@gmail.com>, 'Amit Kapila' <amit.kapila16@gmail.com>, 'Andres Freund' <andres@anarazel.de>, 'Dilip Kumar' <dilipbalaut@gmail.com>, 'Bharath Rupireddy' <bharath.rupireddyforpostgres@gmail.com>, 'PostgreSQL Hackers' <pgsql-hackers@lists.postgresql.org>, 'Bruce Momjian' <bruce@momjian.us>, 'Julien Rouhaud' <rjuju123@gmail.com>
Date: 2023-12-18T07:40:43Z
Lists: pgsql-hackers
Dear Thomas, Alexander,

> Thanks for reporting. Yes, it has been already reported by me [1], and the server
> log was provided by Andrew [2]. The issue was that a file creation was failed
> because the same one was unlink()'d just before but it was in
> STATUS_DELETE_PENDING
> status. Kindly Alexander proposed a fix [3] and it looks good to me, but
> confirmations by senior and windows-friendly developers are needed to move
> forward.
> (at first we thought the issue was solved by updating, but it was not correct)
> 
> I know that you have developed there region, so I'm very happy if you check the
> forked thread.

I forgot to say an important point. The issue was not introduced by the feature.
It just actualized a possible failure, only for Windows environment.

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.