Kafka Connect: Exclude zombie commitId from validThroughTs() - #17080
Kafka Connect: Exclude zombie commitId from validThroughTs()#17080thswlsqls wants to merge 1 commit into
Conversation
CommitState.addReady() buffers every DATA_COMPLETE event regardless of commitId, and validThroughTs() used the buffer without filtering, so a zombie coordinator's stale event (from a prior commit) could corrupt or null out the valid-through timestamp written to VALID_THROUGH_TS_SNAPSHOT_PROP. Filter readyBuffer by currentCommitId, matching the pattern already used for receivedPartitionCount. Generated-by: Claude Code
|
This pull request has been marked as stale due to 30 days of inactivity. It will be closed in 1 week if no further activity occurs. If you think that’s incorrect or this pull request requires a review, please simply write any comment. If closed, you can revive the PR at any time and @mention a reviewer or discuss it on the dev@iceberg.apache.org list. Thank you for your contributions. |
|
This pull request has been closed due to lack of activity. This is not a judgement on the merit of the PR in any way. It is just a way of keeping the PR queue manageable. If you think that is incorrect, or the pull request requires review, you can revive the PR at any time. |
|
@thswlsqls this was closed by the stale bot on 28 Aug, not on merit — it was never reviewed by The bug is real and current. Verified against
The null timestamp in your zombie payload is what makes the test bite: it flips The bot's message says the PR can be revived at any time. @bryanck would you be willing to reopen |
Closes #17077
Summary
CommitState.addReady()buffers everyDATA_COMPLETEevent inreadyBufferregardless ofcommitId, andvalidThroughTs()used that buffer unfiltered, so a zombie coordinator's stale event from a previous commit could corrupt or null outVALID_THROUGH_TS_SNAPSHOT_PROP.validThroughTs()now filtersreadyBufferbyObjects.equals(currentCommitId, payload.commitId()), the same patternaddReady()already applies toreceivedPartitionCount.receivedPartitionCountandisCommitReady()but leftvalidThroughTs()unfiltered — this closes that gap.Testing done
TestCommitState#testGetValidThroughTsIgnoresZombieCoordinatorPayloads, mirroringtestIsCommitReadyIgnoresZombieCoordinatorPayloadsfrom PR Kafka Connect: Make CommitState.isCommitReady() O(1) #16453, covering a zombie coordinator'sDATA_COMPLETE(differentcommitId, null timestamp) being excluded from the valid-through calculation.TestCommitState#testGetValidThroughTsto stubcommitId()on its mockedDataCompletepayloads so they match the new filter../gradlew :iceberg-kafka-connect:iceberg-kafka-connect:checkpasses —TestCommitState5/5, full module 123/123, 0 failures.AI Disclosure