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

sanghyeok An updated KAFKA-21238:
---------------------------------
    Labels: consumer group-coordinator  (was: )

> Mutating nested sets in consumer assignor input can corrupt coordinator 
> target assignment state
> -----------------------------------------------------------------------------------------------
>
>                 Key: KAFKA-21238
>                 URL: https://issues.apache.org/jira/browse/KAFKA-21238
>             Project: Kafka
>          Issue Type: Bug
>            Reporter: sanghyeok An
>            Assignee: sanghyeok An
>            Priority: Minor
>              Labels: consumer, group-coordinator
>
> *Description*
> {{MemberSubscriptionAndAssignmentImpl}} retains an {{Assignment}} that 
> references the coordinator’s existing target assignment. Although 
> {{Assignment}} wraps the outer map with 
> {{{}Collections.unmodifiableMap(){}}}, the nested partition sets remain 
> mutable.
> If a custom assignor uses the input assignment as a working data structure 
> and modifies a nested set, it also modifies the coordinator’s existing target 
> assignment before returning the assignment result. 
>  
> KS also had similar issue https://issues.apache.org/jira/browse/KAFKA-20846 
> and it had been resolved.
>  
> *Actual Behavior*
> A local reproduction of the Consumer path demonstrated the following:
>  * The existing target assignment changes from \{0, 1} to \{1} during 
> assignor execution.
>  * {{TargetAssignmentBuilder}} considers the existing assignment and the 
> returned result equal, so it does not generate a target assignment change 
> record for the member.
>  * The reverse index still retains the ownership information for partition 0.
>  * Rolling back to the snapshot does not restore partition 0 in the nested 
> set.
> This can leave the coordinator’s in-memory state, reverse index, and logged 
> state inconsistent.
> *Expected Behavior*
> The input assignment provided to the assignor should be immutable and 
> isolated from coordinator state. Attempts to modify nested partition sets 
> should be rejected without affecting the coordinator’s existing target 
> assignment.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to