Hi Amit. PSA my v7 WIP patch for the Solution1.
This patch still applies onto the v30 patch set [1] from other 2PC thread: [1] https://www.postgresql.org/message-id/CAFPTHDYA8yE6tEmQ2USYS68kNt%2BkM%3DSwKgj%3Djy4AvFD5e9-UTQ%40mail.gmail.com (I understand you would like this to be delivered as a separate patch independent of v30. I will convert it ASAP) ==== Coded / WIP: * tablesync slot is now permanent instead of temporary. The tablesync slot name is no longer tied to the Subscription slot name. * the tablesync slot cleanup (drop) code is added for DropSubscription and for finish_sync_worker functions * tablesync worked now allowing multiple tx instead of single tx * a new state (SUBREL_STATE_COPYDONE) is persisted after a successful copy_table in LogicalRepSyncTableStart. * if a relaunched tablesync finds the state is SUBREL_STATE_COPYDONE then it will bypass the initial copy_table phase. * tablesync sets up replication origin tracking in LogicalRepSyncTableStart (similar as done for the apply worker). The origin is advanced when first created. * tablesync replication origin tracking is cleaned up during DropSubscription and/or process_syncing_tables_for_apply * The v7 DropSubscription cleanup code has been rewritten since v6. The subscription TAP tests have been executed many (7) times now without observing any of the race problems that I previously reported seeing when using the v6 patch. TODO / Known Issues: * Help / comments / cleanup * There is temporary "!!>>" excessive logging scattered around which I added to help my testing during development * Address review comments --- Kind Regards, Peter Smith. Fujitsu Australia
v7-0002-WIP-patch-for-the-Solution1.patch
Description: Binary data
v7-0001-2PC-change-tablesync-slot-to-use-same-two_phase-m.patch
Description: Binary data