Integrated: 8347274: Gatherers.mapConcurrent exhibits undesired behavior under variable delays, interruption, and finishing
Viktor Klang
vklang at openjdk.org
Mon Jan 13 10:40:45 UTC 2025
On Thu, 9 Jan 2025 10:13:52 GMT, Viktor Klang <vklang at openjdk.org> wrote:
> The following patch updates Gatherers.mapConcurrent to limit work-in-progress (on-going and completed-unpushed) to the `maxConcurrency` so that head-of-line blocking does not cause completed-unpushed work to grow unbounded.
>
> This also simplifies interruption handling to ignore-and-restore, which needs to be done on a per-element-basis as the calling thread can change between invocations of the integrator, as well as the finisher, so restoring it on finish is not possible (and won't happen if there's an exception thrown during integration anyway).
>
> Furthermore, logic has been added to reduce the risk of any spawned virtual threads surviving the processing of the stream.
This pull request has now been integrated.
Changeset: 450636ae
Author: Viktor Klang <vklang at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/450636ae28b84ded083b6861c6cba85fbf87e16e
Stats: 148 lines in 2 files changed: 93 ins; 16 del; 39 mod
8347274: Gatherers.mapConcurrent exhibits undesired behavior under variable delays, interruption, and finishing
Reviewed-by: alanb
-------------
PR: https://git.openjdk.org/jdk/pull/22999
More information about the core-libs-dev
mailing list