Dear Hackers, This is a follow-up thread for pg_createsubscriber [1]. I started a new thread since there is no activity around here.
## Problem Assuming that there is a cascading replication like below: node A --(logical replication)--> node B --(streaming replication)--> node C In this case, subscriptions exist even on node C, but it does not try to connect to node A because the logical replication launcher/worker won't be launched. After the conversion, node C becomes a subscriber for node B, and the subscription toward node A remains. Therefore, another worker that tries to connect to node A will be launched, raising an ERROR [2]. This failure may occur even during the conversion. ## Solution The easiest solution is to drop pre-existing subscriptions from the converted node. To avoid establishing connections during the conversion, slot_name is set to NONE on the primary first, then drop on the standby. The setting will be restored on the primary node. Attached patch implements the idea. Test script is also included, but not sure it should be on the HEAD BTW, I found that LogicalRepInfo.oid won't be used. If needed, I can create another patch to remove the attribute. How do you think? [1]: https://www.postgresql.org/message-id/CAA4eK1J22UEfrqx222h5j9DQ7nxGrTbAa_BC%2B%3DmQXdXs-RCsew%40mail.gmail.com [2]: https://www.postgresql.org/message-id/CANhcyEWvimA1-f6hSrA%3D9qkfR5SonFb56b36M%2B%2BvT%3DLiFj%3D76g%40mail.gmail.com Best Regards, Hayato Kuroda FUJITSU LIMITED https://www.fujitsu.com/
0001-pg_createsubscriber-Drop-pre-existing-subscriptions-.patch
Description: 0001-pg_createsubscriber-Drop-pre-existing-subscriptions-.patch