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: Dilip Kumar <dilipbalaut@gmail.com>, "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>
Date: 2023-09-12T11:50:30Z
Lists: pgsql-hackers
Dear Peter, Thank you for reviewing! ===== > Commit message > > 1. > Note that the pg_resetwal command would remove WAL files, which are required > as > restart_lsn. If WALs required by logical replication slots are removed, they are > unusable. Therefore, during the upgrade, slot restoration is done > after the final > pg_resetwal command. The workflow ensures that required WALs are remained. > > ~ > > SUGGESTION (minor wording and /required as/required for/ and > /remained/retained/) > Note that the pg_resetwal command would remove WAL files, which are > required for restart_lsn. If WALs required by logical replication > slots are removed, the slots are unusable. Therefore, during the > upgrade, slot restoration is done after the final pg_resetwal command. > The workflow ensures that required WALs are retained. Fixed. > doc/src/sgml/ref/pgupgrade.sgml > > 2. > The SGML is mal-formed so I am unable to build PG DOCS. Please try > building the docs before posting the patch. > > ref/pgupgrade.sgml:446: parser error : Opening and ending tag > mismatch: itemizedlist line 410 and listitem > </listitem> > ^ Fixed. Sorry for noise. > 3. > + <listitem> > + <para> > + The new cluster must not have permanent logical replication slots, i.e., > + there are no slots whose > + <link > linkend="view-pg-replication-slots">pg_replication_slots</link>.<structfield>t > emporary</structfield> > + is <literal>false</literal>. > + </para> > + </listitem> > > /there are no slots whose/there must be no slots where/ Fixed. > 4. > 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 migrated to the > + new standby, and other slots on the old standby must be recreated as > + they are not copied. > </para> > > Mixing the terms "migrated" and "copied" seems to complicate this. > Does the following suggestion work better instead? > > SUGGESTION (??) > Only logical slots on the primary are migrated to the new standby. Any > other slots present on the old standby must be recreated. Hmm, I preferred to use "copied". How do you think? > src/backend/replication/slot.c > > 5. InvalidatePossiblyObsoleteSlot > > + /* > + * The logical replication slots shouldn't be invalidated as > + * max_slot_wal_keep_size is set to -1 during the upgrade. > + */ > + if (*invalidated && SlotIsLogical(s) && IsBinaryUpgrade) > + elog(ERROR, "Replication slots must not be invalidated during the upgrade."); > + > > I felt the comment could have another sentence like "The following is > just a sanity check." Added. > src/bin/pg_upgrade/function.c > > 6. get_loadable_libraries > > + array_size = totaltups + count_old_cluster_logical_slots(); > + os_info.libraries = (LibraryInfo *) pg_malloc(sizeof(LibraryInfo) * > (array_size)); > totaltups = 0; > > 6a. > Maybe something like 'n_libinfos' would be a more meaningful name than > 'array_size'? Fixed. > 6b. > + os_info.libraries = (LibraryInfo *) pg_malloc(sizeof(LibraryInfo) * > (array_size)); > > Those extra parentheses around "(array_size)" seem overkill. Removed. Best Regards, Hayato Kuroda FUJITSU LIMITED
Commits
-
Fix issues in binary_upgrade_logical_slot_has_caught_up().
- 0bf62460bb9e 17.0 landed
-
Fix a random failure in 003_logical_slots.pl.
- 63c5df126abb 17.0 landed
-
Fix a test in 003_logical_slots.
- 3e36e48d8efe 17.0 landed
-
Fix uninitialized slot array access during the upgrade.
- a7db71ed2787 17.0 landed
-
Fix the test 003_logical_slots.
- 8af917be6bad 17.0 landed
-
Commit b195e6d482 forgot to update meson.build.
- 8949b978ff49 17.0 landed
-
Use shorter file names in the upgrade logical slots test.
- b195e6d482b8 17.0 landed
-
Migrate logical slots to the new node during an upgrade.
- 29d0a77fa660 17.0 landed
-
Flush logical slots to disk during a shutdown checkpoint if required.
- e0b2eed047df 17.0 landed
-
Prevent possibility of panics during shutdown checkpoint.
- c6c333436491 10.0 cited