OmniaGM commented on code in PR #19964:
URL: https://github.com/apache/kafka/pull/19964#discussion_r2152650081
##########
clients/src/main/java/org/apache/kafka/clients/producer/internals/Sender.java:
##########
@@ -609,7 +607,14 @@ private void handleProduceResponse(ClientResponse
response, Map<TopicPartition,
.collect(Collectors.toList()),
p.errorMessage(),
p.currentLeader());
- ProducerBatch batch = batches.get(tp);
+ // Version 13 drop topic name and add support to topic id.
+ // We need to find batch based on topic id and partition
index only as
+ // topic name in the response might be empty.
+ ProducerBatch batch = batches.entrySet().stream()
+ .filter(entry ->
+ entry.getKey().same(new
TopicIdPartition(r.topicId(), p.index(), r.name()))
+
).map(Map.Entry::getValue).findFirst().orElse(null);
Review Comment:
We always had this potentail of batch is null this why I raised the comment
here https://github.com/apache/kafka/pull/19964#discussion_r2152281872 that
should we have IllegalStateException. I updated this to fail with
IllegalStateException instead of leaving it like this
##########
clients/src/main/java/org/apache/kafka/common/TopicIdPartition.java:
##########
@@ -78,6 +78,21 @@ public TopicPartition topicPartition() {
return topicPartition;
}
+ /**
+ * Checking if TopicIdPartition meant to be the same reference to same
this object but doesn't have all the data.
+ * If topic name is empty and topic id is persisted then the method will
relay on topic id only
+ * otherwise the method will relay on topic name.
+ * @return true if topic has same topicId and partition index as topic
names some time might be empty.
+ */
+ public boolean same(TopicIdPartition tpId) {
+ if (tpId.topic().isEmpty() && !tpId.topicId.equals(Uuid.ZERO_UUID)) {
Review Comment:
added null check there
--
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]