Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8179667

CompletableFuture.join does not include stack trace of current thread

XMLWordPrintable

      FULL PRODUCT VERSION :
      java version "1.8.0_60"
      Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
      Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

      ADDITIONAL OS VERSION INFORMATION :
      Darwin delta.local 16.5.0 Darwin Kernel Version 16.5.0: Fri Mar 3 16:52:33 PST 2017; root:xnu-3789.51.2~3/RELEASE_X86_64 x86_64

      A DESCRIPTION OF THE PROBLEM :
      Code:

      ```
          public static class JoinBug {
              public static void main(String[] args) {
                  CompletableFuture<Object> f1 = new CompletableFuture<>();
                  CompletableFuture<Object> f2 = f1.thenApply(x -> x);
                  new Thread(() -> f1.completeExceptionally(new RuntimeException())).start();
                  // prints stack trace without current thread
                  f2.join();
              }
          }
      ```

      It prints stack trace.

      Stack trace does not include current thread stack trace (e. g. method main).

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Stack trace should include current thread (thread which calls "join") frames.
      ACTUAL -
      Exception in thread "main" java.util.concurrent.CompletionException: java.lang.RuntimeException
      at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:292)
      at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:308)
      at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:593)
      at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:577)
      at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
      at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:1977)
      at ru.yandex.misc.concurrent.CompletableFutures$JoinBug.lambda$main$7(CompletableFutures.java:208)
      at java.lang.Thread.run(Thread.java:745)
      Caused by: java.lang.RuntimeException
      ... 2 more


      REPRODUCIBILITY :
      This bug can be reproduced always.

            martin Martin Buchholz
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: