frankvicky commented on code in PR #18737: URL: https://github.com/apache/kafka/pull/18737#discussion_r1946698002
########## clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/ApplicationEventProcessor.java: ########## @@ -414,7 +415,15 @@ private void process(final ResetOffsetEvent event) { */ private void process(final CheckAndUpdatePositionsEvent event) { CompletableFuture<Boolean> future = requestManagers.offsetsRequestManager.updateFetchPositions(event.deadlineMs()); - future.whenComplete(complete(event.future())); + future.whenComplete((value, exception) -> { + if (exception != null) + event.future().completeExceptionally(exception); + else { + requestManagers.commitRequestManager.ifPresent(commitRequestManager -> + commitRequestManager.setLatestPartitionOffsets(subscriptions.allConsumed())); Review Comment: Hey @lianetm, > Should we consider waiting until the AsyncCommitEvent has retrieved the `allConsumed` before returning control to the app thread? Bear with me if this is dumb, do you mean something like: ``` @Override public void commitAsync() { commitAsync(subscriptions.allConsumed(), null); } ``` In this way, the app thread will get allConsumed and pass as an argument of asyncCommitEvent. ########## clients/src/main/java/org/apache/kafka/clients/consumer/internals/events/ApplicationEventProcessor.java: ########## @@ -414,7 +415,15 @@ private void process(final ResetOffsetEvent event) { */ private void process(final CheckAndUpdatePositionsEvent event) { CompletableFuture<Boolean> future = requestManagers.offsetsRequestManager.updateFetchPositions(event.deadlineMs()); - future.whenComplete(complete(event.future())); + future.whenComplete((value, exception) -> { + if (exception != null) + event.future().completeExceptionally(exception); + else { + requestManagers.commitRequestManager.ifPresent(commitRequestManager -> + commitRequestManager.setLatestPartitionOffsets(subscriptions.allConsumed())); Review Comment: Hey @lianetm, > Should we consider waiting until the AsyncCommitEvent has retrieved the `allConsumed` before returning control to the app thread? Bear with me if this is dumb, do you mean something like: ``` @Override public void commitAsync() { commitAsync(subscriptions.allConsumed(), null); } ``` In this way, the app thread will get allConsumed and pass as an argument of asyncCommitEvent. -- 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