[ 
https://issues.apache.org/jira/browse/KAFKA-12462?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17300652#comment-17300652
 ] 

Walker Carlson commented on KAFKA-12462:
----------------------------------------

If we were shutting down the whole client the thread would become dead either 
way. In 2.7 I think the only impact it would have is that the handler would get 
called after the close call when it shouldn’t. But otherwise it might not have 
an effect. I suppose there is no harm to back-porting though.

I defiantly don't think it is worth cutting a new RC for anything that does not 
have removeThread in it

 

> 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)

Reply via email to