cmccabe commented on code in PR #13169: URL: https://github.com/apache/kafka/pull/13169#discussion_r1091087602
########## clients/src/main/java/org/apache/kafka/common/utils/Time.java: ########## @@ -86,4 +89,30 @@ default Timer timer(Duration timeout) { return timer(timeout.toMillis()); } + /** + * Wait for a future to complete, or time out. + * + * @param future The future to wait for. + * @param deadlineNs The time in the future, in monotonic nanoseconds, to time out. + * @return The result of the future. + * @param <T> The type of the future. + */ + default <T> T waitForFuture( + CompletableFuture<T> future, + long deadlineNs + ) throws TimeoutException, InterruptedException, ExecutionException { + TimeoutException timeoutException = null; + while (true) { + long nowNs = nanoseconds(); + if (deadlineNs <= nowNs) { + throw (timeoutException == null) ? new TimeoutException() : timeoutException; + } + long deltaNs = deadlineNs - nowNs; + try { + return future.get(deltaNs, TimeUnit.NANOSECONDS); Review Comment: Thanks for reviewing. I should have been clearer that this wasn't the main point of the PR :) -- 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