Xin Gong created FLINK-37449:
--------------------------------

             Summary: Postgres don't commit lsn when taskmanager failover
                 Key: FLINK-37449
                 URL: https://issues.apache.org/jira/browse/FLINK-37449
             Project: Flink
          Issue Type: Bug
          Components: Flink CDC
    Affects Versions: cdc-3.2.1, cdc-3.3.0, cdc-3.1.1, cdc-3.2.0, cdc-3.1.0
            Reporter: Xin Gong
             Fix For: cdc-3.3.1


Postgres cdc don't commit lsn when the task has entered incremental phase and 
happens failover. It cause wal data can't be cleaned.

BeacauseĀ PostgresSourceEnumerator#receiveOffsetCommitAck is true causeĀ 
PostgresSourceReader#isCommitOffset always be false when the task failover and 
receiveOffsetCommitAck is true.Ā  It will cause task never call 
notifyCheckpointComplete.
{code:java}
@Override
public void notifyCheckpointComplete(long checkpointId) throws Exception {
this.minHeap.add(checkpointId);
if (this.minHeap.size() <= this.lsnCommitCheckpointsDelay) {
LOG.info("Pending checkpoints '{}'.", this.minHeap);
return;
}
final long checkpointIdToCommit = this.minHeap.poll();
LOG.info(
"Pending checkpoints '{}', to be committed checkpoint id '{}'.",
this.minHeap,
checkpointIdToCommit);

// After all snapshot splits are finished, update stream split's metadata and 
reset start
// offset, which maybe smaller than before.
// In case that new start-offset of stream split has been recycled, don't 
commit offset
// during new table added phase.
if (isCommitOffset()) {
super.notifyCheckpointComplete(checkpointIdToCommit);
}
} {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to