You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "cmccabe (via GitHub)" <gi...@apache.org> on 2023/01/30 19:35:54 UTC

[GitHub] [kafka] cmccabe commented on a diff in pull request #13169: KAFKA-14658: Do not open broker ports until we are ready to accept traffic

cmccabe commented on code in PR #13169:
URL: https://github.com/apache/kafka/pull/13169#discussion_r1091061226


##########
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:
   The JavaDoc for CompletableFuture doesn't say what it does in case of negative timeouts. Therefore, it's a bad idea to rely on this behavior. Also, the subtraction you propose may overflow.
   
   In any case this code was part of a different PR, #13153. I only included it here because I needed something from FutureUtils. Sorry for the confusion.



-- 
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-unsubscribe@kafka.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org