showuon commented on code in PR #12748:
URL: https://github.com/apache/kafka/pull/12748#discussion_r1015224638


##########
clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractStickyAssignor.java:
##########
@@ -117,30 +117,41 @@ private boolean allSubscriptionsEqual(Set<String> 
allTopics,
                 isAllSubscriptionsEqual = false;
             }
 
-            MemberData memberData = memberData(subscription);
+            Optional<Integer> generation;
+            List<TopicPartition> ownedPartitionsInMetadata;
+            if (!subscription.ownedPartitions().isEmpty() && 
subscription.generationId() != DEFAULT_GENERATION) {
+                // In ConsumerProtocolSubscription v2 or higher, we don't need 
to deserialize the byte buffer
+                // and take from fields directly
+                ownedPartitionsInMetadata = subscription.ownedPartitions();
+                generation = Optional.of(subscription.generationId());
+            } else {
+                MemberData memberData = memberData(subscription);
+                ownedPartitionsInMetadata = memberData.partitions;
+                generation = memberData.generation;
+            }

Review Comment:
   > It seems that we also rely on the generation in 
prepopulateCurrentAssignments so I suppose that we need a similar logic over 
there in order to be consistent. Do we?
   
   Good point! Will update it.
   
   > Knowing this, I wonder if we should update memberData to get the correct 
generation from the subscription. That would ensure that all usages of 
memberData get the correct view. What do you think?
   
   Do you mean in L130, we should use the generationId from subscription? I 
don't think that's correct because the generationId is bound to the owned 
partition in memberData. 



-- 
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: jira-unsubscr...@kafka.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to