[ https://issues.apache.org/jira/browse/KAFKA-17394?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17875549#comment-17875549 ]
Ao Li commented on KAFKA-17394: ------------------------------- Since there are multiple tests related to this. We may consider to make `DefaultTaskManager:currentTask` and related operations synchronized > Flaky test in DefaultTaskExecutorTest.shouldSetUncaughtStreamsException > ----------------------------------------------------------------------- > > Key: KAFKA-17394 > URL: https://issues.apache.org/jira/browse/KAFKA-17394 > Project: Kafka > Issue Type: Bug > Reporter: Ao Li > Priority: Major > > Another flaky test caused by non-atomic operation in DefaultTaskExecutor. > Please use https://github.com/aoli-al/kafka/tree/KAFKA-249 this fork to > reproduce the failure. Command: ./gradlew :streams:test --tests > DefaultTaskExecutorTest.shouldSetUncaughtStreamsException > Exception: > {code} > org.opentest4j.AssertionFailedError: expected: <null> but was: > <org.apache.kafka.streams.processor.internals.ReadOnlyTask@1e469dfd> > at > org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) > at > org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) > at org.junit.jupiter.api.AssertNull.failNotNull(AssertNull.java:50) > at org.junit.jupiter.api.AssertNull.assertNull(AssertNull.java:35) > at org.junit.jupiter.api.AssertNull.assertNull(AssertNull.java:30) > at org.junit.jupiter.api.Assertions.assertNull(Assertions.java:279) > at > org.apache.kafka.streams.processor.internals.tasks.DefaultTaskExecutorTest.shouldSetUncaughtStreamsException(DefaultTaskExecutorTest.java:254) > at java.base/java.lang.reflect.Method.invoke(Method.java:580) > at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) > at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) > {code} > The root cause is that the operation in > DefaultTaskExecutor:unassignCurrentTask is not atomic: > {code} > // This operation unblocks the verify statement in test > taskManager.unassignTask(currentTask, DefaultTaskExecutor.this); > final StreamTask retTask = currentTask; > // This operation sets the currentTask to null. > currentTask = null; > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)