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

Bill Bejeck updated KAFKA-10563:
--------------------------------
    Fix Version/s:     (was: 2.7.0)
                   2.8.0

> Make sure task directories don't remain locked by dead threads
> --------------------------------------------------------------
>
>                 Key: KAFKA-10563
>                 URL: https://issues.apache.org/jira/browse/KAFKA-10563
>             Project: Kafka
>          Issue Type: Bug
>          Components: streams
>            Reporter: A. Sophie Blee-Goldman
>            Priority: Major
>             Fix For: 2.8.0
>
>
> Most common/expected exceptions within Streams are handled gracefully, and 
> the thread will make sure to clean up all resources such as task locks during 
> shutdown. However, there are some instances where an unexpected exception 
> such as an IllegalStateException can leave some resources orphaned.
> We have seen this happen to task directories after an IllegalStateException 
> is hit during the TaskManager's rebalance handling logic – the Thread shuts 
> down, but loses track of some tasks before unlocking them. This blocks any 
> further work on that task by any other thread in the same instance.
> Previously we decided that this was "ok" because an IllegalStateException 
> means all bets are off. But with the upcoming work of KIP-663 and KIP-671, 
> users will be able to react smartly on dying threads and replace them with 
> new ones, making it more important than ever to ensure that the application 
> can continue on with no lasting repercussions of a thread death. If we allow 
> users to revive/replace a thread that dies due to IllegalStateException, that 
> thread should not be blocked from doing any work by the ghost of its 
> predecessor. 
> It might be easiest to just add some logic to the cleanup thread to verify 
> all the existing locks against the list of live threads, and remove any 
> zombie locks. But we probably want to do this purging more frequently than 
> the cleanup thread runs (10min by default) – so maybe we can leverage the 
> work in KIP-671 and have each thread purge any locks still owned by it after 
> the uncaught exception handler runs, but before the thread dies.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to