kamalcph commented on code in PR #20706:
URL: https://github.com/apache/kafka/pull/20706#discussion_r2434544374


##########
core/src/main/scala/kafka/server/ReplicaManager.scala:
##########
@@ -1636,7 +1636,7 @@ class ReplicaManager(val config: KafkaConfig,
   /**
    * Process all remote fetches by creating async read tasks and handling them 
in DelayedRemoteFetch collectively.
    */
-  private def processRemoteFetches(remoteFetchInfos: 
util.HashMap[TopicIdPartition, RemoteStorageFetchInfo],
+  private def processRemoteFetches(remoteFetchInfos: 
util.LinkedHashMap[TopicIdPartition, RemoteStorageFetchInfo],

Review Comment:
   1. Processing the partitions in the same order as client sent might address 
starvation issues if any.
   2. Also, if we want to introduce a dynamic broker config to switch between 
single vs multi fetch to reduce the remote calls then the partitions need to be 
processed in the same order.
   
   ### Case when single fetch is preferable than multi-fetch
   
   When prefetch is not enabled and topic message-size is higher than the 
consumer `max.partition.fetch.bytes`, then only first partition result gets 
served. For rest of the partitions, we read the batch header, then fail-fast 
but the number of remote read calls might be high. 



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to