Avoid issues with certain tasks not processing during sleep (#11526)

This commit is contained in:
Jason Penilla 2024-10-29 12:46:33 -07:00
parent e50219c8fd
commit 6455fa4a8b

View file

@ -0,0 +1,46 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jason Penilla <11360596+jpenilla@users.noreply.github.com>
Date: Sun, 27 Oct 2024 14:18:28 -0700
Subject: [PATCH] Avoid issues with certain tasks not processing during sleep
Execute processQueue tasks during sleep: needed for console tab completions, pre join event, etc.
Upstream has set precedent that the bukkit scheduler will still tick during sleep, which avoids some problems
with plugins not accounting for the new sleep feature, but can still lead to others. Because of this we have disabled
sleep by default, which avoids the problem and makes it more obvious to check if this is the cause of issues when
enabled. We also unload chunks during sleep to prevent memory leaks caused by plugin chunk loads.
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
this.server.getScheduler().mainThreadHeartbeat(); // CraftBukkit
+ // Paper start - avoid issues with certain tasks not processing during sleep
+ Runnable task;
+ while ((task = this.processQueue.poll()) != null) {
+ task.run();
+ }
+ for (final ServerLevel level : this.levels.values()) {
+ // process unloads
+ level.getChunkSource().tick(() -> true, false);
+ }
+ // Paper end - avoid issues with certain tasks not processing during sleep
this.server.spark.executeMainThreadTasks(); // Paper - spark
this.tickConnection();
this.server.spark.tickEnd(((double)(System.nanoTime() - lastTick) / 1000000D)); // Paper - spark
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java
@@ -0,0 +0,0 @@ public class DedicatedServerProperties extends Settings<DedicatedServerPropertie
this.whiteList = this.getMutable("white-list", false);
this.enforceSecureProfile = this.get("enforce-secure-profile", true);
this.logIPs = this.get("log-ips", true);
- this.pauseWhenEmptySeconds = this.get("pause-when-empty-seconds", 60);
+ this.pauseWhenEmptySeconds = this.get("pause-when-empty-seconds", -1); // Paper - disable tick sleeping by default
this.acceptsTransfers = this.get("accepts-transfers", false);
String s = this.get("level-seed", "");
boolean flag = this.get("generate-structures", true);