gabriellefu opened a new pull request, #23556:
URL: https://github.com/apache/kafka/pull/23556

    - **`TaskAssignorTestbed`** — generates a random topology and group from a 
seed                                                                            
                                              
       (two profiles: `SMALL` for logical corners, `LARGE` for production 
shape), runs the                                                                
                                                    
       assignor until the assignment is a fixed point, then applies random 
rebalance                                                                       
                                                   
       events (process add/drop/restart/retag, member add/drop, standby count 
change)                                                                         
                                                
       and converges again. A failure prints the seed and the full history; 
replay a                                                                        
                                                  
       single scenario with `STREAMS_ASSIGNOR_FUZZ_SEED=<seed>` or shift the 
whole run                                                                       
                                                 
       with `STREAMS_ASSIGNOR_FUZZ_BASE_SEED=<seed>` (system properties work 
from an IDE).                                                                   
                                                 
     - **`AssignmentInvariants`** — properties every assignor must satisfy, 
asserted on                                                                     
                                                  
       every assignment: output covers exactly the group members, every task is 
active                                                                          
                                              
       on exactly one member, standbys only on stateful tasks, at most          
                                                                                
                                              
       `numStandbyReplicas` standbys per task, no process holds two copies of a 
task.                                                                           
                                              
     - **`AssignmentMetrics`** — grades an assignment without asserting: 
active/total                                                                    
                                                     
       spread per member, load spread per process, process/member stickiness, 
task                                                                            
                                                
       moves, rack diversity per tag. The summary over a run is printed so two 
versions                                                                        
                                               
       of an assignor can be compared.                                          
                                                                                
                                              
     - **`StickyTaskAssignorFuzzTest`** — runs `StickyTaskAssignor` through the 
testbed                                                                         
                                              
       and adds the checks its algorithm guarantees: no member above            
                                                                                
                                              
       `ceil(activeTasks / members)`, every stateful task gets exactly          
                                                                                
                                              
       `min(numStandbyReplicas, processes - 1)` standbys, and rack-aware tags 
do not                                                                          
                                                
       change the active assignment. 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to