Purushottam Sinha created FLINK-40618:
-----------------------------------------

             Summary: Connectors/Kafka: 
SourceTopicIntegrityTest.testTopicIntegritySuccess is flaky, times out waiting 
for records
                 Key: FLINK-40618
                 URL: https://issues.apache.org/jira/browse/FLINK-40618
             Project: Flink
          Issue Type: Bug
            Reporter: Purushottam Sinha


SourceTopicIntegrityTest.testTopicIntegritySuccess intermittently fails on CI 
with a timeout waiting for records in the sink topic, on the very first job 
submission (before any savepoint/restart/recreation happens in the test itself).

Observed 3 times across unrelated branches/PRs in a 3-day window (2026-09-07 to 
2026-09-09):
- 
https://github.com/apache/flink-connector-kafka/actions/runs/34200093784/job/102428596113
 (PR #304, a NOTICE-copyright-only change -- no code touched)
- https://github.com/apache/flink-connector-kafka/actions/runs/34335588824
- https://github.com/apache/flink-connector-kafka/actions/runs/34200551453 
(push to main)

All three show the identical chain in the log:

ERROR TopicIntegrityProvider - Topic integrity mismatch: expected topic Id of 
SourceTopicIntegrityTest_source-topic to be X, got Y
Caused by: TopicIntegrityException: Topic SourceTopicIntegrityTest_source-topic 
was recreated
...
[ERROR] 
SourceTopicIntegrityTest.testTopicIntegritySuccess(SourceSubscriptionMode, 
MiniCluster) -- Time elapsed: ~130s <<< ERROR!
java.util.concurrent.TimeoutException: Timeout waiting for 100 records in topic 
SourceTopicIntegrityTest_sink-topic after PT2M

Root cause theory: TopicIntegrityProvider.failIfRecreated 
(flink-connector-kafka/src/main/java/.../enumerator/metadata/TopicIntegrityProvider.java)
 treats any single topic-id mismatch between polls as a permanent recreation 
and fails immediately, with no debounce. The test polls every 50ms 
(SourceTopicIntegrityTest.DISCOVERY_INTERVAL), which is aggressive enough that 
a transient metadata read on a freshly-started Testcontainers Kafka broker 
(cold controller election / topic just created) can be misread as a real 
recreation on CI under load. Since this happens on the very first job 
submission in the test (before the test itself ever touches the topic again), 
the mismatch cannot be a genuine recreation.

This is separate from FLINK-40589 (already fixed), which addressed flakiness in 
the sibling method testTopicIntegrityFailure (a too-short assertion wait), not 
this testTopicIntegritySuccess timeout.

Proposed fix: require a topic-id mismatch to be confirmed on two consecutive 
polls before throwing TopicIntegrityException in 
TopicIntegrityProvider.failIfRecreated, so a single transient metadata blip 
does not fail the job. A lower-risk test-only mitigation would be to increase 
SourceTopicIntegrityTest.DISCOVERY_INTERVAL from 50ms to reduce poll pressure 
on a freshly-created topic.



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

Reply via email to