Yatopia/patches/server/0036-Ensure-pools-create-daemon-threads.patch
Simon Gardling 0f2c8e806a
Updated Upstream and Sidestream(s) (Paper/Purpur) (#478)
Upstream/An Sidestream has released updates that appears to apply and compile correctly
This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing.

Paper Changes:
bc7ea673a Add internal channel initialization listeners (#5557)
b28ad17ac Check for world change in MoveEvent API methods
3095c7592 [Auto] Updated Upstream (CraftBukkit)
f56989c97 Add RespawnFlags to PlayerRespawnEvent (#5533)
7579c2667 Add more API to PlayerMoveEvent (#5553)
ef60c01c4 [Auto] Updated Upstream (CraftBukkit)
0256dbea3 [Auto] Updated Upstream (Bukkit/CraftBukkit)
91ef74029 Updated Upstream (Spigot) (#5550)
fdf2a59d5 Updated Upstream (Bukkit/CraftBukkit) (#5549)

Purpur Changes:
97185df [CI-SKIP] Update mcdevimports documentation
1099c24 Config for wither explosion radius (closes #265)
c5c9527 Configurable damage settings for magma blocks (adds #247)
1389b02 Updated Upstream (Paper)  (#300)
79c82d2 Configuration to change the maximum number of bees in a hive (#301)
9fd776e Add configurable minecart speed and move controllable minecart options
2021-04-30 13:16:37 -04:00

45 lines
2.7 KiB
Diff

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/MCUtil.java b/src/main/java/net/minecraft/server/MCUtil.java
index b7399d17dd64ca8b1f1fab405cb0ac914dc53b98..add92c6ba9556b0a2695b007e0d83d7334412c2d 100644
--- a/src/main/java/net/minecraft/server/MCUtil.java
+++ b/src/main/java/net/minecraft/server/MCUtil.java
@@ -59,12 +59,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);
diff --git a/src/main/java/net/minecraft/server/network/LoginListener.java b/src/main/java/net/minecraft/server/network/LoginListener.java
index ed836462123efc6903e406fa926e55e1cedddb95..a9ff089da89d001ccb230025b640ba4d042fdb7b 100644
--- a/src/main/java/net/minecraft/server/network/LoginListener.java
+++ b/src/main/java/net/minecraft/server/network/LoginListener.java
@@ -129,7 +129,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