dajac commented on a change in pull request #9401:
URL: https://github.com/apache/kafka/pull/9401#discussion_r526074777



##########
File path: 
clients/src/main/java/org/apache/kafka/clients/producer/internals/Sender.java
##########
@@ -560,13 +562,24 @@ private void handleProduceResponse(ClientResponse 
response, Map<TopicPartition,
             log.trace("Received produce response from node {} with correlation 
id {}", response.destination(), correlationId);
             // if we have a response, parse it
             if (response.hasResponse()) {
+                // Sender should exercise PartitionProduceResponse rather than 
ProduceResponse.PartitionResponse
+                // https://issues.apache.org/jira/browse/KAFKA-10696
                 ProduceResponse produceResponse = (ProduceResponse) 
response.responseBody();
-                for (Map.Entry<TopicPartition, 
ProduceResponse.PartitionResponse> entry : 
produceResponse.responses().entrySet()) {
-                    TopicPartition tp = entry.getKey();
-                    ProduceResponse.PartitionResponse partResp = 
entry.getValue();
+                produceResponse.data().responses().forEach(r -> 
r.partitionResponses().forEach(p -> {
+                    TopicPartition tp = new TopicPartition(r.name(), 
p.index());
+                    ProduceResponse.PartitionResponse partResp = new 
ProduceResponse.PartitionResponse(
+                            Errors.forCode(p.errorCode()),
+                            p.baseOffset(),
+                            p.logAppendTimeMs(),
+                            p.logStartOffset(),
+                            p.recordErrors()
+                                .stream()
+                                .map(e -> new 
ProduceResponse.RecordError(e.batchIndex(), e.batchIndexErrorMessage()))
+                                .collect(Collectors.toList()),

Review comment:
       Yeah, I do agree. It won't change much from a performance point of view. 
I was more thinking about this from a code consistency point of view. I don't 
feel strong about this at all. It is just that I usually prefer not to mix 
paradigms. I recognise that this is a personal taste :).




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