kirktrue commented on code in PR #15844:
URL: https://github.com/apache/kafka/pull/15844#discussion_r1598898939
##########
clients/src/main/java/org/apache/kafka/clients/consumer/internals/CommitRequestManager.java:
##########
@@ -1145,14 +1141,42 @@ private CompletableFuture<Map<TopicPartition,
OffsetAndMetadata>> addOffsetFetch
inflightOffsetFetches.stream().filter(r ->
r.sameRequest(request)).findAny();
if (dupe.isPresent() || inflight.isPresent()) {
- log.info("Duplicated OffsetFetchRequest: " +
request.requestedPartitions);
- dupe.orElseGet(inflight::get).chainFuture(request.future);
+ log.info("Duplicate OffsetFetchRequest found for partitions:
{}", request.requestedPartitions);
+ OffsetFetchRequestState originalRequest =
dupe.orElseGet(inflight::get);
+ originalRequest.chainFuture(request.future);
} else {
this.unsentOffsetFetches.add(request);
}
return request.future;
}
+ /**
+ * Remove the {@link OffsetFetchRequestState request} from the
inflight requests queue <em>iff</em>
+ * both of the following are true:
+ *
+ * <ul>
+ * <li>The request completed with a <code>null</code> {@link
Throwable error}</li>
+ * <li>The request is not {@link OffsetFetchRequestState#isExpired
expired}</li>
+ * </ul>
+ *
+ * <p/>
+ *
+ * In some cases, even though an offset fetch request may complete
without an error, <em>technically</em>
+ * the request took longer than the user's provided timeout. In that
case, the application thread will
+ * still receive a timeout error, and will shortly try to fetch these
offsets again. Keeping the result
+ * of the <em>current</em> attempt will enable the </em><em>next</em>
attempt to use that result and return
Review Comment:
🤦♂️
--
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]