On Mon, 13 May 2024 17:06:10 GMT, Viktor Klang <[email protected]> wrote:
>> This change adds wrapping of the CancellationException produced by
>> CompletableFuture::get() and CompletableFuture::join() to add more
>> diagnostic information and align better with FutureTask.
>>
>> Running the sample code from the JBS issue in JShell will produce the
>> following:
>>
>>
>> jshell> java.util.concurrent.CancellationException:
>> at
>> java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:392)
>> at
>> java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073)
>> at REPL.$JShell$18.m2($JShell$18.java:10)
>> at REPL.$JShell$17.m1($JShell$17.java:8)
>> at REPL.$JShell$16B.lambda$main$0($JShell$16B.java:8)
>> at java.base/java.lang.Thread.run(Thread.java:1575)
>> Caused by: java.util.concurrent.CancellationException
>> at
>> java.base/java.util.concurrent.CompletableFuture.cancel(CompletableFuture.java:2510)
>> at REPL.$JShell$16B.lambda$main$1($JShell$16B.java:11)
>> ... 1 more
>
> src/java.base/share/classes/java/util/concurrent/CompletableFuture.java line
> 392:
>
>> 390: return null;
>> 391: if (x instanceof CancellationException)
>> 392: throw new CancellationException("",
>> (CancellationException)x);
>
> One option here would be to put "CompletableFuture.get()" or "get()" as a
> message.
Given the serviceability motivation, the overkill of adding "get" and "join"
strings seems reasonable.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/19219#discussion_r1598868469