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

Guozhang Wang updated KAFKA-7985:
---------------------------------
    Component/s: streams

> Cleanup AssignedTasks / AbstractTask logic
> ------------------------------------------
>
>                 Key: KAFKA-7985
>                 URL: https://issues.apache.org/jira/browse/KAFKA-7985
>             Project: Kafka
>          Issue Type: Improvement
>          Components: streams
>            Reporter: Guozhang Wang
>            Priority: Major
>
> Today the life time of a task is:
> created -> [initializeStateStores] -> 
> restoring (writes to the initialized state stores) -> [initializeTopology] -> 
> running -> [closeTopology] -> 
> suspended -> [closeStateManager] -> 
> dead
> And hence the assigned tasks contains the following non-overlapping sets : 
> created, restoring, running, suspended, (dead tasks do no need to be 
> maintained). Normally `created` should be empty since once a task is created 
> it should move on transit to either restoring or running immediately. So 
> whenever we are suspending tasks, we should go through these sets and act 
> accordingly:
> 1. `created` and `suspended`: just check these two sets are always empty.
> 2. `running`: transit to `suspended`.
> 3. `restoring`: transite to `suspended`. But the difference here is that we 
> do not need to close topology since it was not created yet at all; we just 
> need to remember the restored position, and keep the restorers on hold 
> instead of clearing all of them.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to