Hi Amit.
PSA my v5 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
TODO / Known Issues:
* I think if there are crashed tablesync workers they may not be known
to DropSubscription current code. This might be a problem to cleanup
slots and/or origin tracking belonging to those unknown workers.
* Help / comments / cleanup
* There is temporary "!!>>" excessive logging of mine scattered around
which I added to help my testing during development
* Address review comments
---
Kind Regards,
Peter Smith.
Fujitsu Australia