Call EndCopyFrom() after initial table sync in logical replication

Started by Shinya Katoabout 7 hours ago1 messageshackers
Jump to latest
#1Shinya Kato
shinya11.kato@gmail.com

Hi hackers,

While reading the logical replication initial table sync code, I
noticed that copy_table() calls BeginCopyFrom() and CopyFrom() but
never calls the matching EndCopyFrom().

EndCopyFrom() calls pgstat_progress_end_command(), which resets
st_progress_command to PROGRESS_COMMAND_INVALID. Without that call,
the backend status entry continues to report an active COPY operation
while the tablesync worker proceeds to WAL catchup. As a result,
pg_stat_progress_copy shows a stale entry for the entire WAL catchup
phase.

Attached patch adds EndCopyFrom(cstate) immediately after
CopyFrom(cstate) returns.

--
Best regards,
Shinya Kato
NTT OSS Center

Attachments:

v1-0001-Call-EndCopyFrom-during-initial-table-sync-in-log.patchapplication/octet-stream; name=v1-0001-Call-EndCopyFrom-during-initial-table-sync-in-log.patchDownload+1-1