apoorvmittal10 commented on code in PR #17870:
URL: https://github.com/apache/kafka/pull/17870#discussion_r1908437561


##########
core/src/main/java/kafka/server/share/DelayedShareFetch.java:
##########
@@ -207,20 +212,21 @@ LinkedHashMap<TopicIdPartition, 
FetchRequest.PartitionData> acquirablePartitions
         LinkedHashMap<TopicIdPartition, FetchRequest.PartitionData> 
topicPartitionData = new LinkedHashMap<>();
 
         sharePartitions.forEach((topicIdPartition, sharePartition) -> {
-            int partitionMaxBytes = 
shareFetch.partitionMaxBytes().getOrDefault(topicIdPartition, 0);
             // Add the share partition to the list of partitions to be fetched 
only if we can
             // acquire the fetch lock on it.
             if (sharePartition.maybeAcquireFetchLock()) {
                 try {
                     // If the share partition is already at capacity, we 
should not attempt to fetch.
                     if (sharePartition.canAcquireRecords()) {
+                        // We do not know the total partitions that can be 
acquired at this stage, hence we set maxBytes
+                        // to 0 for now and will update it before doing the 
replica manager fetch.
                         topicPartitionData.put(
                             topicIdPartition,
                             new FetchRequest.PartitionData(
                                 topicIdPartition.topicId(),
                                 sharePartition.nextFetchOffset(),
                                 0,
-                                partitionMaxBytes,
+                                0,

Review Comment:
   Should we set it 0 or some default value, just thinking what the right way 
should be?



##########
core/src/main/java/kafka/server/share/DelayedShareFetch.java:
##########
@@ -312,7 +323,7 @@ private boolean 
isMinBytesSatisfied(LinkedHashMap<TopicIdPartition, FetchRequest
                     return true;
                 } else if 
(fetchOffsetMetadata.onSameSegment(endOffsetMetadata)) {
                     // we take the partition fetch size as upper bound when 
accumulating the bytes.
-                    long bytesAvailable = 
Math.min(endOffsetMetadata.positionDiff(fetchOffsetMetadata), 
partitionData.maxBytes);
+                    long bytesAvailable = 
Math.min(endOffsetMetadata.positionDiff(fetchOffsetMetadata), 
shareFetch.fetchParams().maxBytes / topicPartitionData.size());

Review Comment:
   This division represents the uniform division strategy so if we change our 
partitionMaxBytesStrategy from UNIFORM to something else then will it be 
correct?



##########
core/src/main/java/kafka/server/share/DelayedShareFetch.java:
##########
@@ -207,20 +212,21 @@ LinkedHashMap<TopicIdPartition, 
FetchRequest.PartitionData> acquirablePartitions
         LinkedHashMap<TopicIdPartition, FetchRequest.PartitionData> 
topicPartitionData = new LinkedHashMap<>();
 
         sharePartitions.forEach((topicIdPartition, sharePartition) -> {
-            int partitionMaxBytes = 
shareFetch.partitionMaxBytes().getOrDefault(topicIdPartition, 0);
             // Add the share partition to the list of partitions to be fetched 
only if we can
             // acquire the fetch lock on it.
             if (sharePartition.maybeAcquireFetchLock()) {
                 try {
                     // If the share partition is already at capacity, we 
should not attempt to fetch.
                     if (sharePartition.canAcquireRecords()) {
+                        // We do not know the total partitions that can be 
acquired at this stage, hence we set maxBytes
+                        // to 0 for now and will update it before doing the 
replica manager fetch.
                         topicPartitionData.put(
                             topicIdPartition,
                             new FetchRequest.PartitionData(
                                 topicIdPartition.topicId(),
                                 sharePartition.nextFetchOffset(),
                                 0,
-                                partitionMaxBytes,
+                                0,

Review Comment:
   Do we require to create `FetchRequest.PartitionData` at this point or can 
delay the creation to later when we know the maxBytes?



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