[ 
https://issues.apache.org/jira/browse/FLINK-40619?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sergey Nuyanzin reassigned FLINK-40619:
---------------------------------------

    Assignee: Dale Lane

> DynamicKafkaSourceReaderTest.testHandleSourceEventRetainsRemovedClusterOffsetsUntilExpired
>  flaky - removed-cluster retention expiry cannot be tested deterministically
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: FLINK-40619
>                 URL: https://issues.apache.org/jira/browse/FLINK-40619
>             Project: Flink
>          Issue Type: Bug
>          Components: Connectors / Kafka
>            Reporter: Dale Lane
>            Assignee: Dale Lane
>            Priority: Major
>              Labels: test-flaky, test-stability
>
> {{DynamicKafkaSourceReaderTest.testHandleSourceEventRetainsRemovedClusterOffsetsUntilExpired}}
>  fails intermittently under CPU contention with
> {{java.util.NoSuchElementException: No value present}}
> {{at java.util.Optional.orElseThrow(Optional.java:377)}}
> {{at 
> DynamicKafkaSourceReaderTest.testHandleSourceEventRetainsRemovedClusterOffsetsUntilExpired(DynamicKafkaSourceReaderTest.java:294)}}
> (It passes consistently on an unloaded developer machine, but fails 
> intermittently in pull request workflows.)
> The behaviour under test is time-based. When a cluster is removed, 
> {{DynamicKafkaSourceReader}} gives the affected splits a deadline of "now 
> plus the configured retention", and {{snapshotState()}} prunes splits whose 
> deadline has passed before returning them.
> The test configures a retention window of one second and then asserts against 
> the retained split across several {{snapshotState()}} calls. The whole 
> sequence must therefore complete within one second of wall-clock time. A 
> garbage collection or scheduling pause longer than that expires the split 
> before the assertions read it, and the lookup finds nothing.
> The reader reads the current time directly from the system clock at each of 
> the three points where retention is stamped or evaluated. There is no way for 
> a test to control the passage of time, so an expiry test has to pick a 
> real-time window and race it. The short window is fragile when running in the 
> Github CI workers under load (and increasing it to a long window would not 
> assert that expiry behaviour is really correct).



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

Reply via email to