Use at minimum 2 threads for Data fixers

Per MC-138093 comments, ForkJoinPool uses unlimited threads if
parallelism is ever 1. A 2 core machine will end up with 1
with the change I had previously made, so bumped the min
to 2 so we will never trigger the unlimited thread situation.

This aligns the min back with Spigot, but allows use of more
threads on systems with more cores.
This commit is contained in:
Aikar 2018-11-05 17:25:08 -05:00
parent f50977c5c4
commit 0f455f00ed
No known key found for this signature in database
GPG Key ID: 401ADFC9891FAAFE
1 changed files with 1 additions and 1 deletions

View File

@ -13,7 +13,7 @@ index 7ac07ac07ac0..7ac07ac07ac0 100644
a(datafixerbuilder); a(datafixerbuilder);
// CraftBukkit start // CraftBukkit start
- ForkJoinPool pool = new ForkJoinPool(Integer.getInteger("net.minecraft.server.DataConverterRegistry.bootstrapThreads", Math.min(Runtime.getRuntime().availableProcessors(), 2))); - ForkJoinPool pool = new ForkJoinPool(Integer.getInteger("net.minecraft.server.DataConverterRegistry.bootstrapThreads", Math.min(Runtime.getRuntime().availableProcessors(), 2)));
+ ForkJoinPool pool = new ForkJoinPool(Integer.getInteger("net.minecraft.server.DataConverterRegistry.bootstrapThreads", Math.min(6, Math.max(Runtime.getRuntime().availableProcessors() - 2, 1)))); // Paper - use more reasonable default + ForkJoinPool pool = new ForkJoinPool(Integer.getInteger("net.minecraft.server.DataConverterRegistry.bootstrapThreads", Math.min(6, Math.max(Runtime.getRuntime().availableProcessors() - 2, 2)))); // Paper - use more reasonable default - 2 is hard minimum to avoid using unlimited threads
DataFixer fixer = datafixerbuilder.build(pool); DataFixer fixer = datafixerbuilder.build(pool);
pool.shutdown(); pool.shutdown();
return fixer; return fixer;