Hi Amit. PSA the v16 patch for the Tablesync Solution1.
Main differences from v15: + Tablesync cleanups of DropSubscription/AlterSubscription_refresh are re-implemented as as ProcessInterrupts function ==== Features: * The tablesync slot is now permanent instead of temporary. * The tablesync slot name is no longer tied to the Subscription slot name. * The tablesync worker is now allowing multiple tx instead of single tx * A new state (SUBREL_STATE_FINISHEDCOPY) is persisted after a successful copy_table in tablesync's LogicalRepSyncTableStart. * If a re-launched tablesync finds state SUBREL_STATE_FINISHEDCOPY then it will bypass the initial copy_table phase. * Now tablesync sets up replication origin tracking in LogicalRepSyncTableStart (similar as done for the apply worker). The origin is advanced when first created. * Cleanup of tablesync resources: - The tablesync slot cleanup (drop) code is added for process_syncing_tables_for_sync functions. - The tablesync replication origin tracking is cleaned process_syncing_tables_for_apply. - A tablesync function to cleanup its own slot/origin is called from ProcessInterrupt. This is indirectly invoked by DropSubscription/AlterSubscrition when they signal the tablesync worker to stop. * Updates to PG docs. TODO / Known Issues: * Race condition observed in "make check" may be related to this patch. * Add test cases. --- Please also see some test scenario logging which shows the new tablesync cleanup function getting called as results of Drop/AlterSUbscription. --- Kind Regards, Peter Smith. Fujitsu Australia
TEST SCENARIO Purpose: To observe that the patch can process cleanups caused by the tablesync kills during DropSubscription Note: The "!!>>" is extra logging added for testing, not a normal part of PG. Steps: 1. CREATE PUBLICATION for some table T1 2. CREATE SUBSCRIPTION for that publication 3. Pause the tablesync worker in CATCHUP state (so there would be a tablesync slot in need of cleanup) 4. Show the slots 5. DROP SUBSCRIPTION // this will signal SIGTERM the tablesync workers 6. Allow the tablesync work to proceed. // See if it gets into the interrupt cleanup function and drops the slots/origin as expected ================== ## ## No slots to start with ## [postgres@CentOS7-x64 ~]$ psql -d test_pub -c "select * from pg_replication_slots;" slot_name | plugin | slot_type | datoid | database | temporary | active | active_pid | xmin | catalog_xmin | restart_lsn | conf irmed_flush_lsn | wal_status | safe_wal_size -----------+--------+-----------+--------+----------+-----------+--------+------------+------+--------------+-------------+----- ----------------+------------+--------------- (0 rows) ## ## Normal PUBLICATION of a table ## [postgres@CentOS7-x64 ~]$ psql -d test_pub -c "CREATE PUBLICATION tap_pub FOR TABLE test_tab;" CREATE PUBLICATION ## ## Create subscription, and pause the tablesync process when gets to CATCHUP state ## [postgres@CentOS7-x64 ~]$ psql -d test_sub -p 54321 -c "CREATE SUBSCRIPTION tap_sub CONNECTION 'host=localhost dbname=test_pub application_name=tap_sub' PUBLICATION tap_pub;" 2021-01-18 18:15:55.951 AEDT [2068] LOG: logical decoding found consistent point at 0/1614640 2021-01-18 18:15:55.951 AEDT [2068] DETAIL: There are no running transactions. 2021-01-18 18:15:55.951 AEDT [2068] STATEMENT: CREATE_REPLICATION_SLOT "tap_sub" LOGICAL pgoutput NOEXPORT_SNAPSHOT NOTICE: created replication slot "tap_sub" on publisher CREATE SUBSCRIPTION 2021-01-18 18:15:55.975 AEDT [2069] LOG: logical replication apply worker for subscription "tap_sub" has started 2021-01-18 18:15:55.976 AEDT [2069] LOG: !!>> The apply worker process has PID = 2069 [postgres@CentOS7-x64 ~]$ 2021-01-18 18:15:55.984 AEDT [2074] LOG: starting logical decoding for slot "tap_sub" 2021-01-18 18:15:55.984 AEDT [2074] DETAIL: Streaming transactions committing after 0/1614678, reading WAL from 0/1614640. 2021-01-18 18:15:55.984 AEDT [2074] STATEMENT: START_REPLICATION SLOT "tap_sub" LOGICAL 0/0 (proto_version '2', publication_names '"tap_pub"') 2021-01-18 18:15:55.984 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:15:55.984 AEDT [2074] LOG: logical decoding found consistent point at 0/1614640 2021-01-18 18:15:55.984 AEDT [2074] DETAIL: There are no running transactions. 2021-01-18 18:15:55.984 AEDT [2074] STATEMENT: START_REPLICATION SLOT "tap_sub" LOGICAL 0/0 (proto_version '2', publication_names '"tap_pub"') 2021-01-18 18:15:55.984 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:15:55.988 AEDT [2077] LOG: logical replication table synchronization worker for subscription "tap_sub", table "test_tab" has started 2021-01-18 18:15:55.988 AEDT [2077] LOG: !!>> The tablesync worker process has PID = 2077 2021-01-18 18:15:55.989 AEDT [2077] LOG: !!>> Sleeping 30 secs. For debugging, attach to process 2077 now! 2021-01-18 18:15:55.996 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:15:55.996 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:15:57.006 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:15:57.006 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:15:58.010 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:15:58.010 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:15:59.013 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:15:59.013 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:00.015 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:00.015 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:01.016 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:01.016 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:02.016 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:02.017 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:03.019 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:03.019 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:04.021 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:04.021 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:05.022 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:05.022 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:06.027 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:06.028 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:07.029 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:07.030 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:08.034 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:08.034 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:09.035 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:09.035 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:10.040 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:10.040 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:11.041 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:11.041 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:12.041 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:12.042 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:13.042 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:13.043 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:14.048 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:14.048 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:15.050 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:15.050 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:16.051 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:16.051 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:17.054 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:17.054 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:18.059 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:18.059 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:19.065 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:19.065 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:20.068 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:20.068 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:21.069 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:21.069 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:22.070 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:22.070 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:23.071 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:23.071 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:24.080 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:24.080 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:25.081 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:25.082 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:25.989 AEDT [2077] LOG: !!>> tablesync worker: About to call LogicalRepSyncTableStart to do initial syncing 2021-01-18 18:16:26.085 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:26.085 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:26.085 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:26.085 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:27.086 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:27.087 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:28.089 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:28.089 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:29.094 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:29.094 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:30.101 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:30.102 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:31.103 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:31.103 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:32.104 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:32.104 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:33.105 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:33.105 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:34.113 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:34.113 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:35.115 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:35.115 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:36.130 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:36.130 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:37.136 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:37.136 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:38.138 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:38.138 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:39.142 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:39.142 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:40.144 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:40.144 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:41.146 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:41.146 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:42.147 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:42.147 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:43.149 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:43.149 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:44.154 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:44.154 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:45.158 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:45.158 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:46.160 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:46.160 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:46.714 AEDT [2077] LOG: !!>> LogicalRepSyncTableStart: walrcv_create_slot for "pg_16394_sync_16385". 2021-01-18 18:16:46.760 AEDT [3556] LOG: logical decoding found consistent point at 0/1614678 2021-01-18 18:16:46.760 AEDT [3556] DETAIL: There are no running transactions. 2021-01-18 18:16:46.760 AEDT [3556] STATEMENT: CREATE_REPLICATION_SLOT "pg_16394_sync_16385" LOGICAL pgoutput USE_SNAPSHOT 2021-01-18 18:16:46.781 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:46.781 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 18:16:46.789 AEDT [2077] LOG: !!>> LogicalRepSyncTableStart: 1 replorigin_create "pg_16394_16385". 2021-01-18 18:16:46.789 AEDT [2077] LOG: !!>> LogicalRepSyncTableStart: 1 replorigin_advance "pg_16394_16385". 2021-01-18 18:16:46.789 AEDT [2077] LOG: !!>> LogicalRepSyncTableStart: 1 replorigin_session_setup "pg_16394_16385". 2021-01-18 18:16:46.789 AEDT [2077] LOG: LogicalRepSyncTableStart: 'pg_16394_16385' origin_startpos lsn 0/16146B0 2021-01-18 18:16:46.789 AEDT [2077] LOG: !!>> tablesync worker: wait for CATCHUP state notification 2021-01-18 18:16:46.789 AEDT [2069] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 18:16:46.789 AEDT [2069] LOG: !!>> apply worker: called process_syncing_tables ## ## Show the slots ## psql -d test_pub -c "select * from pg_replication_slots;" slot_name | plugin | slot_type | datoid | database | temporary | active | active_pid | xmin | catalog_xmin | restar t_lsn | confirmed_flush_lsn | wal_status | safe_wal_size ---------------------+----------+-----------+--------+----------+-----------+--------+------------+------+--------------+------- ------+---------------------+------------+--------------- tap_sub | pgoutput | logical | 16384 | test_pub | f | t | 2074 | | 512 | 0/1614 6B0 | 0/16146B0 | reserved | pg_16394_sync_16385 | pgoutput | logical | 16384 | test_pub | f | f | | | 512 | 0/1614 678 | 0/16146B0 | reserved | (2 rows) ## ## DROP the subscription (while tablesync still paused) ## [postgres@CentOS7-x64 ~]$ psql -d test_sub -p 54321 -c "DROP SUBSCRIPTION tap_sub;" 2021-01-18 18:38:05.069 AEDT [2069] LOG: !!>> ProcessInterrupts: Hello, I am a LogicalWorker 2021-01-18 18:38:05.069 AEDT [2069] FATAL: terminating logical replication worker due to administrator command 2021-01-18 18:38:05.070 AEDT [30060] LOG: background worker "logical replication worker" (PID 2069) exited with exit code 1 ## ## Continue... from the paused tablesync worker ## ## PID 2077 was the tablesync worker ## PID 2069 was the Apply worker ## 2021-01-18 18:38:40.549 AEDT [2077] LOG: !!>> tablesync worker: received CATCHUP state notification 2021-01-18 18:38:40.549 AEDT [2077] LOG: !!>> ProcessInterrupts: Hello, I am a LogicalWorker 2021-01-18 18:38:56.096 AEDT [2077] LOG: !!>> tablesync_cleanup_at_interrupt for relid = 16385 (gdb) p *MyLogicalRepWorker $3 = {launch_time = 664269355984880, in_use = true, generation = 1, proc = 0x7ff208071180, dbid = 16384, userid = 10, subid = 16394, relid = 16385, relstate = 99 'c', relstate_lsn = 23152304, relmutex = 0 '\000', last_lsn = 0, last_send_time = 664269355985870, last_recv_time = 664269355985870, reply_lsn = 0, reply_time = 664269355985870} (gdb) n 298 if (drop_slot_needed) (gdb) p drop_slot_needed $4 = true 2021-01-18 18:41:09.274 AEDT [2077] LOG: !!>> tablesync_cleanup_at_interrupt: dropping the tablesync slot "pg_16394_sync_16385". 2021-01-18 18:41:11.549 AEDT [2077] LOG: !!>> tablesync_cleanup_at_interrupt: dropped the tablesync slot "pg_16394_sync_16385". 2021-01-18 18:41:17.290 AEDT [2077] LOG: !!>> tablesync_cleanup_at_interrupt: dropping origin tracking for "pg_16394_16385" 2021-01-18 18:41:19.146 AEDT [2077] LOG: !!>> tablesync_cleanup_at_interrupt: dropped origin tracking for "pg_16394_16385" 2021-01-18 18:41:23.862 AEDT [2077] LOG: logical replication table synchronization worker for subscription "tap_sub", table "test_tab" has finished NOTICE: dropped replication slot "tap_sub" on publisher DROP SUBSCRIPTION [postgres@CentOS7-x64 ~]$ ## ## Show the slots & origin ## [postgres@CentOS7-x64 ~]$ psql -d test_pub -c "select * from pg_replication_slots;" slot_name | plugin | slot_type | datoid | database | temporary | active | active_pid | xmin | catalog_xmin | restart_lsn | conf irmed_flush_lsn | wal_status | safe_wal_size -----------+--------+-----------+--------+----------+-----------+--------+------------+------+--------------+-------------+----- ----------------+------------+--------------- (0 rows) [postgres@CentOS7-x64 ~]$ psql -d test_sub -p 54321 -c "select * from pg_replication_origin;" roident | roname ---------+-------- (0 rows) [END]
v16-0002-Tablesync-extra-logging.patch
Description: Binary data
TEST SCENARIO Purpose: To observe that the patch can process cleanups caused by the tablesync kills during AlterSubscription_refresh Note: The "!!>>" is extra logging added for testing, not a normal part of PG. Steps: 1. CREATE PUBLICATION for some table T1 2. CREATE SUBSCRIPTION for that publication 3. Pause the tablesync worker in CATCHUP state (so there would be a tablesync slot in need of cleanup) 4. Show the slots 5. ALTER PUBLICATION to DROP the table from it 6. ALTER SUBSCRIPTION REFRESH PUBLICATION // this will signal the tablesync to be stopped 7. Allow the tablesync work to proceed. // See if it gets into the interrupt cleanup function and drops the tablsync slots/origin as expected 8. Show the slots 9. DROP SUBSCRIPTION // this will kill the apply worker and remove the apply slot 10. Show the slots ================== ## ## No slots/origin to start with ## [postgres@CentOS7-x64 ~]$ psql -d test_sub -p 54321 -c "select * from pg_replication_origin;" roident | roname ---------+-------- (0 rows) [postgres@CentOS7-x64 ~]$ psql -d test_pub -c "select * from pg_replication_slots;" slot_name | plugin | slot_type | datoid | database | temporary | active | active_pid | xmin | catalog_xmin | restart_lsn | conf irmed_flush_lsn | wal_status | safe_wal_size -----------+--------+-----------+--------+----------+-----------+--------+------------+------+--------------+-------------+----- ----------------+------------+--------------- (0 rows) ## ## Normal PUBLICATION of a table ## [postgres@CentOS7-x64 ~]$ psql -d test_pub -c "CREATE PUBLICATION tap_pub FOR TABLE test_tab;" CREATE PUBLICATION ## ## Create subscription, and pause the tablsync process when gets to CATCHUP state ## [postgres@CentOS7-x64 ~]$ psql -d test_sub -p 54321 -c "CREATE SUBSCRIPTION tap_sub CONNECTION 'host=localhost dbname=test_pub application_name=tap_sub' PUBLICATION tap_pub;" 2021-01-18 19:16:48.045 AEDT [8618] LOG: logical decoding found consistent point at 0/1618EF0 2021-01-18 19:16:48.045 AEDT [8618] DETAIL: There are no running transactions. 2021-01-18 19:16:48.045 AEDT [8618] STATEMENT: CREATE_REPLICATION_SLOT "tap_sub" LOGICAL pgoutput NOEXPORT_SNAPSHOT NOTICE: created replication slot "tap_sub" on publisher CREATE SUBSCRIPTION 2021-01-18 19:16:48.059 AEDT [8619] LOG: logical replication apply worker for subscription "tap_sub" has started 2021-01-18 19:16:48.059 AEDT [8619] LOG: !!>> The apply worker process has PID = 8619 [postgres@CentOS7-x64 ~]$ 2021-01-18 19:16:48.068 AEDT [8624] LOG: starting logical decoding for slot "tap_sub" 2021-01-18 19:16:48.068 AEDT [8624] DETAIL: Streaming transactions committing after 0/1618F28, reading WAL from 0/1618EF0. 2021-01-18 19:16:48.068 AEDT [8624] STATEMENT: START_REPLICATION SLOT "tap_sub" LOGICAL 0/0 (proto_version '2', publication_names '"tap_pub"') 2021-01-18 19:16:48.068 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:16:48.068 AEDT [8624] LOG: logical decoding found consistent point at 0/1618EF0 2021-01-18 19:16:48.068 AEDT [8624] DETAIL: There are no running transactions. 2021-01-18 19:16:48.068 AEDT [8624] STATEMENT: START_REPLICATION SLOT "tap_sub" LOGICAL 0/0 (proto_version '2', publication_names '"tap_pub"') 2021-01-18 19:16:48.068 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:16:48.073 AEDT [8627] LOG: logical replication table synchronization worker for subscription "tap_sub", table "test_tab" has started 2021-01-18 19:16:48.073 AEDT [8627] LOG: !!>> The tablesync worker process has PID = 8627 2021-01-18 19:16:48.073 AEDT [8627] LOG: !!>> Sleeping 30 secs. For debugging, attach to process 8627 now! 2021-01-18 19:16:48.082 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:16:48.083 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:16:49.090 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:16:49.090 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:16:50.092 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:16:50.092 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:16:51.094 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:16:51.095 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:16:52.097 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:16:52.098 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:16:53.099 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:16:53.099 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:16:54.104 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:16:54.104 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:16:55.106 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:16:55.106 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:16:56.110 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:16:56.111 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:16:57.113 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:16:57.113 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:16:58.116 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:16:58.116 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:16:59.122 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:16:59.122 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:00.124 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:00.124 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:01.126 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:01.126 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:02.128 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:02.128 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:03.132 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:03.132 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:04.132 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:04.133 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:05.136 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:05.136 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:06.139 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:06.139 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:07.141 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:07.141 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:08.142 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:08.142 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:09.148 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:09.149 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:10.150 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:10.150 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:11.151 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:11.151 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:12.156 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:12.156 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:13.157 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:13.157 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:14.159 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:14.159 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:15.162 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:15.162 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:16.164 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:16.164 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:17.165 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:17.165 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:18.087 AEDT [8627] LOG: !!>> tablesync worker: About to call LogicalRepSyncTableStart to do initial syncing 2021-01-18 19:17:18.168 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:18.168 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:18.168 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:18.168 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:19.169 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:19.169 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:20.172 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:20.172 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:21.172 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:21.172 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:22.174 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:22.174 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:23.176 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:23.176 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:23.233 AEDT [8627] LOG: !!>> LogicalRepSyncTableStart: walrcv_create_slot for "pg_16399_sync_16385". 2021-01-18 19:17:23.254 AEDT [9687] LOG: logical decoding found consistent point at 0/1618F28 2021-01-18 19:17:23.254 AEDT [9687] DETAIL: There are no running transactions. 2021-01-18 19:17:23.254 AEDT [9687] STATEMENT: CREATE_REPLICATION_SLOT "pg_16399_sync_16385" LOGICAL pgoutput USE_SNAPSHOT 2021-01-18 19:17:23.262 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:23.262 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:17:23.273 AEDT [8627] LOG: !!>> LogicalRepSyncTableStart: 1 replorigin_create "pg_16399_16385". 2021-01-18 19:17:23.273 AEDT [8627] LOG: !!>> LogicalRepSyncTableStart: 1 replorigin_advance "pg_16399_16385". 2021-01-18 19:17:23.273 AEDT [8627] LOG: !!>> LogicalRepSyncTableStart: 1 replorigin_session_setup "pg_16399_16385". 2021-01-18 19:17:23.273 AEDT [8627] LOG: LogicalRepSyncTableStart: 'pg_16399_16385' origin_startpos lsn 0/1618F60 2021-01-18 19:17:23.273 AEDT [8627] LOG: !!>> tablesync worker: wait for CATCHUP state notification 2021-01-18 19:17:23.273 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:17:23.273 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables ## ## Show the slots ## psql -d test_pub -c "select * from pg_replication_slots;" slot_name | plugin | slot_type | datoid | database | temporary | active | active_pid | xmin | catalog_xmin | restar t_lsn | confirmed_flush_lsn | wal_status | safe_wal_size ---------------------+----------+-----------+--------+----------+-----------+--------+------------+------+--------------+------- ------+---------------------+------------+--------------- tap_sub | pgoutput | logical | 16384 | test_pub | f | t | 8624 | | 513 | 0/1618 F28 | 0/1618F60 | reserved | pg_16399_sync_16385 | pgoutput | logical | 16384 | test_pub | f | f | | | 513 | 0/1618 F28 | 0/1618F60 | reserved | (2 rows) ## ## ALTER PUBLICATION (drop the table) ## [postgres@CentOS7-x64 ~]$ psql -d test_pub -c "ALTER PUBLICATION tap_pub DROP TABLE test_tab;" ALTER PUBLICATION 2021-01-18 19:19:15.236 AEDT [8624] LOG: !!>> pgoutput_begin_txn 2021-01-18 19:19:15.236 AEDT [8624] CONTEXT: slot "tap_sub", output plugin "pgoutput", in the begin callback, associated LSN 0/1619048 2021-01-18 19:19:15.236 AEDT [8624] STATEMENT: START_REPLICATION SLOT "tap_sub" LOGICAL 0/0 (proto_version '2', publication_names '"tap_pub"') 2021-01-18 19:19:15.237 AEDT [8624] LOG: !!>> pgoutput_commit_txn 2021-01-18 19:19:15.237 AEDT [8624] CONTEXT: slot "tap_sub", output plugin "pgoutput", in the commit callback, associated LSN 0/161A730 2021-01-18 19:19:15.237 AEDT [8624] STATEMENT: START_REPLICATION SLOT "tap_sub" LOGICAL 0/0 (proto_version '2', publication_names '"tap_pub"') [postgres@CentOS7-x64 ~]$ ## ## ALTER SUBSCRIPTION while tablesync is still paused ## [postgres@CentOS7-x64 ~]$ psql -d test_sub -p 54321 -c "ALTER SUBSCRIPTION tap_sub REFRESH PUBLICATION;" ## ## Continue... from the paused tablesync worker ## ## PID 2077 was the tablesync worker ## PID 2069 was the Apply worker ## 2021-01-18 19:23:28.653 AEDT [8627] LOG: !!>> tablesync worker: received CATCHUP state notification 2021-01-18 19:23:28.653 AEDT [8627] LOG: !!>> ProcessInterrupts: Hello, I am a LogicalWorker 2021-01-18 19:23:54.525 AEDT [8627] LOG: !!>> tablesync_cleanup_at_interrupt for relid = 16385 (gdb) p *MyLogicalRepWorker $6 = {launch_time = 664273008068979, in_use = true, generation = 2, proc = 0x7ff2080714e8, dbid = 16384, userid = 10, subid = 16399, relid = 16385, relstate = 99 'c', relstate_lsn = 23170912, relmutex = 0 '\000', last_lsn = 0, last_send_time = 664273008070041, last_recv_time = 664273008070041, reply_lsn = 0, reply_time = 664273008070041} (gdb) p drop_slot_needed $7 = true (gdb) 2021-01-18 19:25:10.554 AEDT [8627] LOG: !!>> tablesync_cleanup_at_interrupt: dropping the tablesync slot "pg_16399_sync_16385". 2021-01-18 19:25:12.370 AEDT [8627] LOG: !!>> tablesync_cleanup_at_interrupt: dropped the tablesync slot "pg_16399_sync_16385". 2021-01-18 19:25:16.337 AEDT [8627] LOG: !!>> tablesync_cleanup_at_interrupt: dropping origin tracking for "pg_16399_16385" 2021-01-18 19:25:18.747 AEDT [8627] LOG: !!>> tablesync_cleanup_at_interrupt: dropped origin tracking for "pg_16399_16385" 2021-01-18 19:25:25.645 AEDT [8627] LOG: logical replication table synchronization worker for subscription "tap_sub", table "test_tab" has finished ## ## The Apply worker continues... ## 2021-01-18 19:25:25.646 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:25.646 AEDT [8619] LOG: !!>> apply worker: apply_dispatch for message kind 'B' 2021-01-18 19:25:25.646 AEDT [8619] LOG: !!>> apply worker: apply_dispatch for message kind 'C' 2021-01-18 19:25:25.646 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:25.647 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables ALTER SUBSCRIPTION [postgres@CentOS7-x64 ~]$ 2021-01-18 19:25:26.648 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:26.648 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:27.649 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:27.649 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:28.650 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:28.650 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:29.651 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:29.651 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:30.652 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:30.652 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:31.652 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:31.653 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:32.654 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:32.654 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:33.655 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:33.655 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:34.656 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:34.656 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:35.658 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:35.658 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:36.659 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:36.659 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:37.660 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:37.660 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:38.661 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:38.661 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:39.661 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:39.661 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:40.663 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:40.663 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:41.664 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:41.664 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:42.664 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:42.664 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:43.665 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:43.665 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:44.667 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:44.667 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:45.668 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:45.668 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:46.668 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:46.668 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables ## ## Check the tablesyn slot was cleaned up (the logs above says it was) ## psql -d test_pub -c "select * from pg_replication_slots;" slot_name | plugin | slot_type | datoid | database | temporary | active | active_pid | xmin | catalog_xmin | restart_lsn | co nfirmed_flush_lsn | wal_status | safe_wal_size -----------+----------+-----------+--------+----------+-----------+--------+------------+------+--------------+-------------+--- ------------------+------------+--------------- tap_sub | pgoutput | logical | 16384 | test_pub | f | t | 8624 | | 514 | 0/1619010 | 0/ 161A8C8 | reserved | (1 row) ## ## Apply worker continues... ## 2021-01-18 19:25:48.671 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:49.672 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:49.672 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:50.674 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:50.674 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:51.674 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:51.674 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:52.676 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:52.676 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:53.677 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:53.677 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:54.678 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:54.678 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:55.679 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:55.679 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:55.679 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:55.679 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:56.679 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:56.680 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:57.680 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:57.681 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:58.682 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:58.682 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:25:59.684 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:25:59.684 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:26:00.685 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:26:00.685 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:26:01.686 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:26:01.686 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:26:02.687 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:26:02.687 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:26:03.688 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:26:03.688 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:26:04.689 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:26:04.690 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:26:05.691 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:26:05.691 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:26:06.692 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:26:06.692 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables ## ## Drop subscription. This terminates the apply worker ## psql -d test_sub -p 54321 -c "DROP SUBSCRIPTION tap_sub;"2021-01-18 19:26:07.693 AEDT [8619] LOG: !!>> apply worker: LogicalRepApplyLoop 2021-01-18 19:26:07.693 AEDT [8619] LOG: !!>> apply worker: called process_syncing_tables 2021-01-18 19:26:07.890 AEDT [8619] LOG: !!>> ProcessInterrupts: Hello, I am a LogicalWorker 2021-01-18 19:26:07.890 AEDT [8619] FATAL: terminating logical replication worker due to administrator command 2021-01-18 19:26:07.891 AEDT [30060] LOG: background worker "logical replication worker" (PID 8619) exited with exit code 1 NOTICE: dropped replication slot "tap_sub" on publisher DROP SUBSCRIPTION ## ## Show now there are no slots. ## [postgres@CentOS7-x64 ~]$ psql -d test_pub -c "select * from pg_replication_slots;" slot_name | plugin | slot_type | datoid | database | temporary | active | active_pid | xmin | catalog_xmin | restart_lsn | conf irmed_flush_lsn | wal_status | safe_wal_size -----------+--------+-----------+--------+----------+-----------+--------+------------+------+--------------+-------------+----- ----------------+------------+--------------- (0 rows) [postgres@CentOS7-x64 ~]$ psql -d test_sub -p 54321 -c "select * from pg_replication_origin;" roident | roname ---------+-------- (0 rows) [END]
v16-0001-Tablesync-Solution1.patch
Description: Binary data