Yatopia/patches/server/0042-Ensure-pools-create-daemon-threads.patch
Ivan Pekov 2b156e3c9c
Updated Upstream and Sidestream(s) (Tuinity/Origami/Purpur)
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.

Tuinity Changes:
abeafb0 Updated Upstream (Paper)

Origami Changes:
e204bb8 Update Paper

Purpur Changes:
c7b279f Updated Upstream (Paper & Tuinity)
2021-01-05 19:21:38 +02: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/LoginListener.java b/src/main/java/net/minecraft/server/LoginListener.java
index bb45fc83d81948c84bc721961474e5e806ab404a..847122f76f6d951b24b22c86276140e02aaf37d6 100644
--- a/src/main/java/net/minecraft/server/LoginListener.java
+++ b/src/main/java/net/minecraft/server/LoginListener.java
@@ -108,7 +108,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 653ba0f1d84af1997d768426d3542c9d465f6c93..748742fb03c6066a72ac6046a96e8d9f8fad2694 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);