Fork/Join exceptional completion can return before all tasks have finished executing <was> Re: Exceptional behavior of parallel stream
paul.sandoz at oracle.com
Thu Aug 18 00:03:47 UTC 2016
Hmm… we certainly ensure that any short-circuiting computation will wait until all the computation is complete (tasks still running whose results will be thrown away have to complete before the terminal operation returns).
In that sprit we should be consistent when exceptions are thrown.
But we don’t currently do anything or say anything when a task exceptionally completes, which propagates exceptional completion status up through the computation tree, and when the root task is hit (whose status has the SIGNAL bit set) the caller thread will be notified. This happens independently of task completion via pending counts of CountedCompleter and rest of the computation continues on blissfully unaware.
I need to think about this a little more. To support this we may need to track exceptional completion explicitly by propagating state through CountedCompleter completions.
More information about the core-libs-dev