[
https://issues.apache.org/jira/browse/FLINK-40620?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Martijn Visser closed FLINK-40620.
----------------------------------
Resolution: Duplicate
> SourceTopicIntegrityTest.testTopicIntegritySuccess flaky - asserts exact
> record counts against at-least-once sink
> -----------------------------------------------------------------------------------------------------------------
>
> Key: FLINK-40620
> URL: https://issues.apache.org/jira/browse/FLINK-40620
> Project: Flink
> Issue Type: Bug
> Components: Connectors / Kafka
> Reporter: Dale Lane
> Assignee: Dale Lane
> Priority: Major
> Labels: pull-request-available, test-flaky, test-stability
>
> {{SourceTopicIntegrityTest.testTopicIntegritySuccess}} fails intermittently
> in CI with
> {{java.util.concurrent.TimeoutException: Timeout waiting for 100 records in}}
> {{topic SourceTopicIntegrityTest_sink-topic after PT2M}}
> The failure is not the test running out of time. The polling log shows the
> sink topic held *200* records throughout, while the test waited for {*}100{*}:
> {{Found 200 records in topic SourceTopicIntegrityTest_sink-topic (expected:
> 100)}}
> {{Found 200 records in topic SourceTopicIntegrityTest_sink-topic (expected:
> 100)}}
> {{...}}
> The wait is satisfied only when the count is _equal_ to the expected value,
> so once the topic holds more records than expected the condition can never
> become true. The two-minute timeout is then guaranteed from the first poll
> onwards, however long the job is given.
> The job under test builds its sink without specifying a delivery guarantee,
> so it takes the {{KafkaSinkBuilder}} default of
> {{{}DeliveryGuarantee.NONE{}}}. Under that guarantee a task restart
> legitimately re-emits records that were already written (the 200 records I've
> seen on my unrelated pull request is twice the 100 records that the test
> produces).
> The only assertions are these two exact-count waits. It is asserting a
> no-duplicates property that the sink it configures does not provide. Any
> event that causes a restart (which is happening intermittently on the Github
> CI workers) turns this into a failure.
> I suggest splitting this into a exactly-once test (that enables exactly once
> and avoids the above issue) and a at-least once test (that leaves the
> at-least-once default config, but sets the assertions appropriately) so we
> have coverage of both paths, plus stable tests.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)