Yu-Lin Chen created KAFKA-17661:
-----------------------------------

             Summary: Fix flaky BufferPoolTest.testBlockTimeout
                 Key: KAFKA-17661
                 URL: https://issues.apache.org/jira/browse/KAFKA-17661
             Project: Kafka
          Issue Type: Bug
          Components: clients, unit tests
            Reporter: Yu-Lin Chen
            Assignee: Yu-Lin Chen
         Attachments: 
0001-reproduce-racing-issue-by-adding-delay-to-test-thread.patch

4 flaky out of 221 trunk build in the past 28 days. (github) ([Report 
Link|https://ge.apache.org/scans/tests?search.rootProjectNames=kafka&search.startTimeMax=1727681219558&search.startTimeMin=1725206400000&search.tags=github&search.timeZoneId=Asia%2FTaipei&tests.container=org.apache.kafka.clients.producer.internals.BufferPoolTest&tests.test=testBlockTimeout()])

([Sep 27 2024 at 
04:54:00|https://ge.apache.org/s/nh44u7tsm2lri/tests/task/:clients:test/details/org.apache.kafka.clients.producer.internals.BufferPoolTest/testBlockTimeout()?expanded-stacktrace=WyIwIl0&top-execution=1])
{code:java}
org.opentest4j.AssertionFailedError: The buffer allocated more memory than its 
maximum value 10 

at org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:38)    
at org.junit.jupiter.api.Assertions.fail(Assertions.java:138)   
at 
org.apache.kafka.clients.producer.internals.BufferPoolTest.testBlockTimeout(BufferPoolTest.java:184)
 
at java.lang.reflect.Method.invoke(Method.java:566)     
at java.util.ArrayList.forEach(ArrayList.java:1541)     
at java.util.ArrayList.forEach(ArrayList.java:1541)
{code}
Root cause:
 # The test relies on 3 asynchronous threads being triggered in parallel with 
the test thread [1]. However, there is no guarantee of parallelism in test 
environment. The issue will happend if test thread didn't get CPU within 25 ms. 
We could reproduce this issue by adding 30 ms delay to test thread. Please 
check the attached patch.
 # Since a 25 ms delay is obviously unreliable in the test environment, we 
could consider rewriting the test or increasing the delay. (The maxBlockTimeMs 
was reduced from 2000ms to 10 ms in KAFKA-9852)

[1] 
[https://github.com/apache/kafka/blob/40360819bb97d6b05dfef6451888b4d908fc3bf4/clients/src/test/java/org/apache/kafka/clients/producer/internals/BufferPoolTest.java#L175-L179]



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

Reply via email to