[ https://issues.apache.org/jira/browse/KAFKA-12462?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
John Roesler updated KAFKA-12462: --------------------------------- Fix Version/s: 2.8.0 > Threads in PENDING_SHUTDOWN entering a rebalance can cause an illegal state > exception > -------------------------------------------------------------------------------------- > > Key: KAFKA-12462 > URL: https://issues.apache.org/jira/browse/KAFKA-12462 > Project: Kafka > Issue Type: Bug > Reporter: Walker Carlson > Priority: Blocker > Fix For: 2.8.0 > > > A thread was removed, sending it to the PENDING_SHUTDOWN state, but went > through a rebalance before completing the shutdown. > {code:java} > // [2021-03-07 04:33:39,385] DEBUG [i-07430efc31ad166b7-StreamThread-6] > stream-thread [i-07430efc31ad166b7-StreamThread-6] Ignoring request to > transit from PENDING_SHUTDOWN to PARTITIONS_REVOKED: only DEAD state is a > valid next state (org.apache.kafka.streams.processor.internals.StreamThread) > {code} > Inside StreamsRebalanceListener#onPartitionsRevoked, we have > {code:java} > // > if (streamThread.setState(State.PARTITIONS_REVOKED) != null && > !partitions.isEmpty()) > taskManager.handleRevocation(partitions); > {code} > Since PENDING_SHUTDOWN → PARTITIONS_REVOKED is a disallowed transition, we > never invoke TaskManager#handleRevocation. Currently handleRevocation is > responsible for preparing any active tasks for close, including committing > offsets and writing the checkpoint as well as suspending the task. We can’t > close the task in handleRevocation since we still support EAGER rebalancing, > which invokes handleRevocation at the beginning of a rebalance on all tasks. > The tasks that are actually revoked will be closed during > TaskManager#handleAssignment . The IllegalStateException is specifically > because we don’t suspend the task before attempting to close it, and the > direct transition from RUNNING → CLOSED is forbidden. -- This message was sent by Atlassian Jira (v8.3.4#803005)