This is an automated email from the ASF dual-hosted git repository.

chia7712 pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/kafka.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 0072bd9277b KAFKA-19820 remove the unnecessary copy from 
AbstractFetch#fetchablePartitions (#20745)
0072bd9277b is described below

commit 0072bd9277bf9c622df9fd0982117bcbd55389bf
Author: TaiJuWu <[email protected]>
AuthorDate: Wed Oct 29 21:20:59 2025 +0800

    KAFKA-19820 remove the unnecessary copy from 
AbstractFetch#fetchablePartitions (#20745)
    
    Remove the redundant copy and change the return type to List.  This
    change also align `ShareConsumer`
    
    Reviewers: Kirk True <[email protected]>, Ken Huang
     <[email protected]>, Chia-Ping Tsai <[email protected]>
---
 .../apache/kafka/clients/consumer/internals/AbstractFetch.java    | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git 
a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractFetch.java
 
b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractFetch.java
index e3e52f7525d..27f7fce1fab 100644
--- 
a/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractFetch.java
+++ 
b/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AbstractFetch.java
@@ -341,15 +341,15 @@ public abstract class AbstractFetch implements Closeable {
      * until the previously-fetched data has been processed.
      *
      * @param buffered The set of partitions we have in our buffer
-     * @return {@link Set} of {@link TopicPartition topic partitions} for 
which we should fetch data
+     * @return {@link List} of {@link TopicPartition topic partitions} for 
which we should fetch data
      */
-    private Set<TopicPartition> fetchablePartitions(Set<TopicPartition> 
buffered) {
+    private List<TopicPartition> fetchablePartitions(Set<TopicPartition> 
buffered) {
         // This is the test that returns true if the partition is *not* 
buffered
         Predicate<TopicPartition> isNotBuffered = tp -> !buffered.contains(tp);
 
         // Return all partitions that are in an otherwise fetchable state 
*and* for which we don't already have some
         // messages sitting in our buffer.
-        return new HashSet<>(subscriptions.fetchablePartitions(isNotBuffered));
+        return subscriptions.fetchablePartitions(isNotBuffered);
     }
 
     /**
@@ -430,7 +430,7 @@ public abstract class AbstractFetch implements Closeable {
         Set<TopicPartition> buffered = 
Collections.unmodifiableSet(fetchBuffer.bufferedPartitions());
 
         // This is the set of partitions that do not have buffered data
-        Set<TopicPartition> unbuffered = fetchablePartitions(buffered);
+        List<TopicPartition> unbuffered = fetchablePartitions(buffered);
 
         if (unbuffered.isEmpty()) {
             // If there are no partitions that don't already have data locally 
buffered, there's no need to issue

Reply via email to