OmniaGM commented on code in PR #15968:
URL: https://github.com/apache/kafka/pull/15968#discussion_r1639052751


##########
clients/src/main/java/org/apache/kafka/clients/ApiVersions.java:
##########
@@ -34,10 +34,21 @@ public class ApiVersions {
 
     private final Map<String, NodeApiVersions> nodeApiVersions = new 
HashMap<>();
     private byte maxUsableProduceMagic = RecordBatch.CURRENT_MAGIC_VALUE;
+    private short maxProduceSupportedVersion = ApiKeys.PRODUCE.latestVersion();
 
     public synchronized void update(String nodeId, NodeApiVersions 
nodeApiVersions) {
         this.nodeApiVersions.put(nodeId, nodeApiVersions);
         this.maxUsableProduceMagic = computeMaxUsableProduceMagic();
+        this.maxProduceSupportedVersion = computeMaxProduceSupportedVersion();
+    }
+
+    private short computeMaxProduceSupportedVersion() {
+        Optional<Short> knownBrokerNodesMinSupportedVersionForProduce = 
this.nodeApiVersions.values().stream()

Review Comment:
   We only check ids for topics included in the batch, and we map these from 
the metadata which at this point the producer already fetched them or cached 
them.
   
   By the time we build the `ProduceRequest` the `ProducerMetadata` would 
already get updated if there is a need to do so as usual (I didn't change this 
logic) . Then if I found out that `ProducerMetadata` doesn't contain the topic 
id then the request will be send out with version 11 using the topic name  only 
and broker will figure the id out when it receive it. So the client doesn't 
need to refetch topic ids every time we build a request. 
   
   
   On broker side when broker receive the request if the request is < 12 then 
we use MetadataCache on the broker to map the topic id to topic name and don't 
try to rebuild the `MetadataCache`. If we can't find topic id in MetadataCache 
for this topic then the request would fail with `UNKNOWN_TOPIC_ID`.



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