showuon commented on a change in pull request #10552:
URL: https://github.com/apache/kafka/pull/10552#discussion_r638651011



##########
File path: 
clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractStickyAssignor.java
##########
@@ -444,23 +392,32 @@ private boolean allSubscriptionsEqual(Set<String> 
allTopics,
                 // otherwise (the consumer still exists)
                 for (Iterator<TopicPartition> partitionIter = 
entry.getValue().iterator(); partitionIter.hasNext();) {
                     TopicPartition partition = partitionIter.next();
-                    if 
(!partition2AllPotentialConsumers.containsKey(partition)) {
-                        // if this topic partition of this consumer no longer 
exists remove it from currentAssignment of the consumer
+                    if 
(!topic2AllPotentialConsumers.containsKey(partition.topic())) {
+                        // if this topic partition of this consumer no longer 
exists, remove it from currentAssignment of the consumer
                         partitionIter.remove();
                         currentPartitionConsumer.remove(partition);
-                    } else if 
(!subscriptions.get(entry.getKey()).topics().contains(partition.topic())) {
-                        // if this partition cannot remain assigned to its 
current consumer because the consumer
-                        // is no longer subscribed to its topic remove it from 
currentAssignment of the consumer
+                    } else if 
(!consumerSubscription.topics().contains(partition.topic())) {
+                        // because the consumer is no longer subscribed to its 
topic, remove it from currentAssignment of the consumer
                         partitionIter.remove();
                         revocationRequired = true;
-                    } else
+                    } else {
                         // otherwise, remove the topic partition from those 
that need to be assigned only if
                         // its current consumer is still subscribed to its 
topic (because it is already assigned
                         // and we would want to preserve that assignment as 
much as possible)
-                        unassignedPartitions.remove(partition);
+                        assignedPartitions.add(partition);
+                    }
                 }
             }
         }
+
+        // all partitions that needed to be assigned
+        List<TopicPartition> unassignedPartitions = 
getUnassignedPartitions(sortedAllPartitions, assignedPartitions, 
topic2AllPotentialConsumers);
+        assignedPartitions = null;

Review comment:
       Yes, `assignedPartitions.clear()` would have the same impact, but it'll 
loop through all the arrayList and nullify them one by one. I think we can 
either `null` it, or remove this line. What do you think?
   
   ```java
   /**
        * Removes all of the elements from this list.  The list will
        * be empty after this call returns.
        */
       public void clear() {
           modCount++;
           final Object[] es = elementData;
           for (int to = size, i = size = 0; i < to; i++)
               es[i] = null;
       }```
   ```




-- 
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.

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


Reply via email to