mirror of https://github.com/YatopiaMC/Yatopia.git
Ensure pools create daemon threads
This commit is contained in:
parent
93580df5f2
commit
2c55264dba
|
@ -49,6 +49,7 @@ This is an overview over all patches that are currently used.
|
|||
| server | Don't trigger Lootable Refresh for non player interaction | Aikar | |
|
||||
| server | Don't wake up entities when damage event is cancelled | Phoenix616 | |
|
||||
| server | Dont send useless entity packets | William Blake Galbreath | |
|
||||
| server | Ensure pools create daemon threads | Ivan Pekov | |
|
||||
| server | Entity lifespan | William Blake Galbreath | |
|
||||
| server | Fix "Unable to save chunk" error | Ivan Pekov | |
|
||||
| server | Fix 'outdated server' showing in ping before server fully | William Blake Galbreath | |
|
||||
|
@ -61,7 +62,6 @@ This is an overview over all patches that are currently used.
|
|||
| server | Fix recipe crash | Ivan Pekov | |
|
||||
| server | Fix the dead lagging the server | William Blake Galbreath | |
|
||||
| server | Fix villager dupe | Ivan Pekov | |
|
||||
| server | Fix watchdog termination hanging indefinitely | Ivan Pekov | |
|
||||
| server | Global Eula file | tr7zw | |
|
||||
| server | Heavily optimize furnance fuel and recipe lookups | tr7zw | |
|
||||
| server | Heavily optimize recipe lookups in CraftingManager | Mykyta Komarn | |
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ivan Pekov <ivan@mrivanplays.com>
|
||||
Date: Mon, 5 Oct 2020 17:09:00 +0300
|
||||
Subject: [PATCH] Ensure pools create daemon threads
|
||||
|
||||
If only 1 non-daemon thread is left to run when the server is shutting down, the server won't shut down.
|
||||
This patche ensures that executors make daemon threads.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/LoginListener.java b/src/main/java/net/minecraft/server/LoginListener.java
|
||||
index fa0a8a7e00a64df4d3ba09407193d984e1ff0952..a747d75e3da17c077ccf2cf16be0b7f35b8a4c4b 100644
|
||||
--- a/src/main/java/net/minecraft/server/LoginListener.java
|
||||
+++ b/src/main/java/net/minecraft/server/LoginListener.java
|
||||
@@ -107,7 +107,11 @@ public class LoginListener implements PacketLoginInListener {
|
||||
// Paper start - Cache authenticator threads
|
||||
private static final AtomicInteger threadId = new AtomicInteger(0);
|
||||
private static final java.util.concurrent.ExecutorService authenticatorPool = java.util.concurrent.Executors.newCachedThreadPool(
|
||||
- r -> new Thread(r, "User Authenticator #" + threadId.incrementAndGet())
|
||||
+ r -> { // Yatopia start - make sure produced threads are daemon ones
|
||||
+ Thread thread = new Thread(r, "User Authenticator #" + threadId.incrementAndGet());
|
||||
+ thread.setDaemon(true);
|
||||
+ return thread;
|
||||
+ } // Yatopia end
|
||||
);
|
||||
// Paper end
|
||||
// Spigot start
|
||||
diff --git a/src/main/java/net/minecraft/server/MCUtil.java b/src/main/java/net/minecraft/server/MCUtil.java
|
||||
index 118acbd559c599cf9708ff61a4a6fe8477c61b82..eeb5c6e6ed8785570befbabde97cbae0122bebff 100644
|
||||
--- a/src/main/java/net/minecraft/server/MCUtil.java
|
||||
+++ b/src/main/java/net/minecraft/server/MCUtil.java
|
||||
@@ -42,12 +42,12 @@ public final class MCUtil {
|
||||
public static final ThreadPoolExecutor asyncExecutor = new ThreadPoolExecutor(
|
||||
0, 2, 60L, TimeUnit.SECONDS,
|
||||
new LinkedBlockingQueue<Runnable>(),
|
||||
- new ThreadFactoryBuilder().setNameFormat("Paper Async Task Handler Thread - %1$d").build()
|
||||
+ new ThreadFactoryBuilder().setDaemon(true).setNameFormat("Paper Async Task Handler Thread - %1$d").build() // Yatopia - daemon
|
||||
);
|
||||
public static final ThreadPoolExecutor cleanerExecutor = new ThreadPoolExecutor(
|
||||
1, 1, 0L, TimeUnit.SECONDS,
|
||||
new LinkedBlockingQueue<Runnable>(),
|
||||
- new ThreadFactoryBuilder().setNameFormat("Paper Object Cleaner").build()
|
||||
+ new ThreadFactoryBuilder().setDaemon(true).setNameFormat("Paper Object Cleaner").build() // Yatopia - daemon
|
||||
);
|
||||
|
||||
public static final long INVALID_CHUNK_KEY = getCoordinateKey(Integer.MAX_VALUE, Integer.MAX_VALUE);
|
|
@ -1,22 +0,0 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Ivan Pekov <ivan@mrivanplays.com>
|
||||
Date: Tue, 22 Sep 2020 21:18:24 +0300
|
||||
Subject: [PATCH] Fix watchdog termination hanging indefinitely
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index 07fc09543c154fdf8b8beb86c3466c9ccd24372b..f9c6107bc5d1fe584dad983913c74cf5c73224e7 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -820,6 +820,11 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
||||
MCUtil.asyncExecutor.shutdown(); // Paper
|
||||
try { MCUtil.asyncExecutor.awaitTermination(30, java.util.concurrent.TimeUnit.SECONDS); // Paper
|
||||
} catch (java.lang.InterruptedException ignored) {} // Paper
|
||||
+ // Yatopia start - fix watchdog hanging indefinitely
|
||||
+ MCUtil.cleanerExecutor.shutdown();
|
||||
+ try { MCUtil.cleanerExecutor.awaitTermination(30, java.util.concurrent.TimeUnit.SECONDS);
|
||||
+ } catch (InterruptedException ignored) {}
|
||||
+ // Yatopia end
|
||||
if (org.spigotmc.SpigotConfig.saveUserCacheOnStopOnly) {
|
||||
LOGGER.info("Saving usercache.json");
|
||||
this.getUserCache().b(false); // Paper
|
Loading…
Reference in New Issue