Amal Mokhtar
06/10/2026, 10:38 AMsource-postgres:3.7.2 and hoping someone has seen this.
Problem: After a full refresh completes successfully, the very next incremental CDC sync loads 0 records, and this repeats every time.
Root cause (probably): The full refresh does the ctid snapshot correctly but saves the initial WAL LSN as its final state (the LSN at snapshot start, not at snapshot end). So on the next incremental run, confirmed_flush_lsn == saved_offset_lsn, Debezium sees itself as caught up, skips the snapshot, streams only heartbeats, and exits with 0 records. All WAL changes between snapshot start and the next sync run are lost.
This seems related to flush.lsn.source = false, the slot LSN never advances during the ctid load so the saved state never moves forward.
Question: Is this a known bug in 3.7.x? Is there a patched version or a recommended workaround short of doing a manual refresh every day?
@kapa.aikapa.ai
06/10/2026, 10:38 AMMatt Bayley
06/10/2026, 10:38 PMMatt Bayley
06/10/2026, 10:43 PMflush.lsn.source is set to false to avoid freeing WAL segments during the sync - before the destination writes and we successfully persist the job's state. That prevents situations where the WAL segments are freed prematurely and we lose needed WAL segments.Amal Mokhtar
06/13/2026, 7:27 PMMatt Bayley
06/16/2026, 6:05 PMMatt Bayley
06/16/2026, 6:10 PM