-
-
Notifications
You must be signed in to change notification settings - Fork 371
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Swap from `ForkJoinPool` to `ThreadPoolExecutor` * `ForkJoinPool` does this weird thing where fork-join-tasks can be re-entrant at `join` points, resulting in weird scenarios where a mill-task that hits a yield point (e.g. inside Zinc / parallel-collections / FJP) can start running a second mill-task even before the first has finished, violating all sorts of invariants (# of running tasks exceeds `--jobs`, `FixSizeCache` semaphores get taken twice by the same thread, all sorts of craziness) * We replace `ForkJoinPool#ManagedBlocker` with our own manual logic increasing and decreasing the `ThreadPoolExecutor`s `maximumPoolSize` and `corePoolSize` in our `blocking{...}` wrapper * We need to `Thread#interrupt()` the `promptUpdaterThread` thread when we close the `PromptLogger`, so we don't need to wait the `promptUpdateInterval` (0.1ms for interactive, 60s for non-interactive) before exiting This should fix some of the flakiness we've been seeing in master, that seems to have started from 05bef7e (just eyeballing the CI history), and blocking our re-bootstrapping in #3637
- Loading branch information
Showing
2 changed files
with
34 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters