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

Matthias J. Sax updated KAFKA-21391:
------------------------------------
    Affects Version/s: 4.5.0

> Improve standby stickiness of rack-aware standby placement in the sticky task 
> assignor  
> ----------------------------------------------------------------------------------------
>
>                 Key: KAFKA-21391
>                 URL: https://issues.apache.org/jira/browse/KAFKA-21391
>             Project: Kafka
>          Issue Type: Improvement
>          Components: group-coordinator, streams
>    Affects Versions: 4.5.0
>            Reporter: Ziyun Fu
>            Assignee: Ziyun Fu
>            Priority: Major
>
>  When rack.aware.assignment.tags is set, the sticky assignor ranks rack 
> diversity above stickiness. It places standbys in four steps, and each step 
> runs for all tasks before the next one starts:                                
>                                
>                                                                               
>                                                       
>   1. to a previous member (active or standby) of the task that makes the task 
> more rack-diverse                                     
>   2. to the least-loaded member that makes the task more rack-diverse         
>                                                       
>   3. to a previous member of the task                                         
>                                                       
>   4. to the least-loaded member                                               
>                                                       
>      
> The least-loaded pick in step 2 only looks at load. It doesn't know that the 
> member it picks is a previous member of another task that is still waiting 
> for step 3. For example:                                                      
>                               
>                                                                               
>                                                       
>   - Members A and B make task1 equally rack-diverse, and neither has task1's 
> state. A an B have the same load only depending on which is in the front, so 
> step 2 puts task1 on A.    
>   - A is also a previous standby member of task2, but it doesn't make task2 
> more rack-diverse (e.g. it is in the rack of task2's active), so task2 can 
> only go back to A in step 3.                                                  
>                               
>   - If task1 took A's last free slot, step 3 can't put task2 on A. Step 4 
> then puts task2 on a member without its state, which has to restore it.       
>                                                                               
>                                
>                                                                               
>                                                                               
>              
>                                                                              



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to