<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Thanks for the feedback, Filip<br>
<br>
To add to Alan's response¡Xas scopes are opened within methods, it's really up to the caller of the method whether uninterruptibility is acceptable (since it is transitive).</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
And thank you again for providing datapoints regarding the chosen defaults, that's much appreciated!</div>
<div class="elementToProof" id="Signature">
<div style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Cheers,<br>
¡Ô</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<b><br>
</b></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<b>Viktor Klang</b></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Software Architect, Java Platform Group<br>
Oracle</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="text-align: left; margin-left: 5pt; font-family: Calibri; font-size: 10pt; color: rgb(0, 0, 0);" class="elementToProof">
Confidential ¡V Oracle Internal</div>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> loom-dev <loom-dev-retn@openjdk.org> on behalf of Alan Bateman <alan.bateman@oracle.com><br>
<b>Sent:</b> Tuesday, 21 October 2025 10:11<br>
<b>To:</b> Josiah Noel <josiahnoel@gmail.com>; loom-dev <loom-dev@openjdk.java.net><br>
<b>Subject:</b> Re: Structured Concurrency Feedback</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">On 20/10/2025 19:03, Josiah Noel wrote<br>
><br>
> I assume there are good reasons to not make it like <br>
> CompletableFuture's unchecked join method, so if nothing can be done <br>
> I'll just leave it at that.<br>
<br>
CF::join is not interruptible and will wait indefinitely when <br>
interrupted.  That may be okay in a top-level usage but would be <br>
problematic if executed in a subtask when the scope is cancelled (as the <br>
scope owner would block indefinitely in close waiting for the subtask).<br>
<br>
An uninterruptible-join can be built on an interruptible-join of course <br>
and that may be an option for a usage that you know will never be cancelled.<br>
<br>
><br>
> The application itself is nothing but an orchestration api where we <br>
> make downstream calls to other services to get and combine data. I <br>
> didn't test anything other than the default joiner because if any of <br>
> the calls fail we want to terminate the request immediately (they were <br>
> also all different types). I didn't need to check the state of the <br>
> individual tasks, so I used a supplier for the wrapper.<br>
><br>
This is useful on two points. One is that the default policy that we <br>
think is right for a high percentage of cases. The second is whether it <br>
will be more common to fork subtasks that return results of the same <br>
type or different types. So your comments are very useful, as is your <br>
"works for me" comment in the introduction - thank you for taking the <br>
time to send mail on your experiences.<br>
<br>
-Alan<br>
</div>
</span></font></div>
</body>
</html>