Thread

  1. Call EndCopyFrom() after initial table sync in logical replication

    Shinya Kato <shinya11.kato@gmail.com> — 2026-05-04T07:58:12Z

    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