Compare commits

..

3 Commits

Author SHA1 Message Date
MrHua269
b8963f9862 Try fixing NPE and append missing functions in Watchdog 2024-06-29 22:04:25 +08:00
MrHua269
83a868e3d2 Fix problematic inversions in 0012 2024-06-29 21:46:41 +08:00
MrHua269
9153d07d43 Fix wrong file extension checks 2024-06-28 21:43:19 +08:00
4 changed files with 39 additions and 22 deletions

View File

@@ -31,7 +31,7 @@ index 0000000000000000000000000000000000000000..502b93c7bda9e8577a1901a8777b7cf9
+ }
+}
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index dcdfc70e6c9b021b941a667f288ea09e3c1935e2..67f1205ec362bbb191b642641c45c7bcc53c7625 100644
index b82ed9280f96bacbb87ae77a6afd5d82d8863b58..7991026d6ab467b1e889d56815bded3700ae5765 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -294,7 +294,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@@ -39,7 +39,7 @@ index dcdfc70e6c9b021b941a667f288ea09e3c1935e2..67f1205ec362bbb191b642641c45c7bc
String proxyLink = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "https://docs.papermc.io/velocity/security" : "http://www.spigotmc.org/wiki/firewall-guide/";
// Paper end - Add Velocity IP Forwarding Support
- if (!this.usesAuthentication()) {
+ if (!this.usesAuthentication() && !me.earthme.luminol.config.modules.misc.OfflineModeWarningConfig.enabled) { //Luminol - Add config for offline mod warning
+ if (!this.usesAuthentication() && me.earthme.luminol.config.modules.misc.OfflineModeWarningConfig.enabled) { //Luminol - Add config for offline mod warning
DedicatedServer.LOGGER.warn("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!");
DedicatedServer.LOGGER.warn("The server will make no attempt to authenticate usernames. Beware.");
// Spigot start

View File

@@ -76,10 +76,10 @@ index 0000000000000000000000000000000000000000..71d80b401470db777a86274d32f178bb
+}
diff --git a/src/main/java/me/earthme/luminol/utils/LuminolWatchDog.java b/src/main/java/me/earthme/luminol/utils/LuminolWatchDog.java
new file mode 100644
index 0000000000000000000000000000000000000000..8901c50863032f4ae189fe47d44f9fe91f884a6c
index 0000000000000000000000000000000000000000..3afb52d231c323aa2765c1f4c305fe4910712776
--- /dev/null
+++ b/src/main/java/me/earthme/luminol/utils/LuminolWatchDog.java
@@ -0,0 +1,162 @@
@@ -0,0 +1,174 @@
+package me.earthme.luminol.utils;
+
+import com.google.common.collect.Maps;
@@ -110,7 +110,7 @@ index 0000000000000000000000000000000000000000..8901c50863032f4ae189fe47d44f9fe9
+ private static final Executor checkTimer = CompletableFuture.delayedExecutor(50, TimeUnit.MILLISECONDS,Executors.newSingleThreadExecutor());
+ private static final Logger logger = MinecraftServer.LOGGER;
+ private static int tickCount = 0;
+ private static boolean runScheduleNext = true;
+ private static volatile boolean runScheduleNext = true;
+
+ public static void boot(){
+ runCheck();
@@ -120,6 +120,10 @@ index 0000000000000000000000000000000000000000..8901c50863032f4ae189fe47d44f9fe9
+ checkTimer.execute(LuminolWatchDog::runCheck);
+ }
+
+ public static void stopTicking(){
+ runScheduleNext = false;
+ }
+
+ private static void runCheck(){
+ try {
+ if (MinecraftServer.getServer().isStopped() || !runScheduleNext){
@@ -144,15 +148,23 @@ index 0000000000000000000000000000000000000000..8901c50863032f4ae189fe47d44f9fe9
+ }
+ }
+
+ for (Map.Entry<Thread,Pair<ThreadedRegionizer.ThreadedRegion<?,?>,Long>> tickData : otherTickRegionKeepalive.entrySet()){
+ final Thread targetThread = tickData.getKey();
+ final Pair<ThreadedRegionizer.ThreadedRegion<?, ?>, Long> keepaliveData = tickData.getValue();
+ final long lastKeepalive = keepaliveData.getRight();
+
+ final long timeEscaped = currentTimeNano - lastKeepalive;
+
+ if (timeEscaped >= WatchdogConfig.warnPeriodTicks * 50 * 1000 * 1000){
+ threadsToWarn.add(Pair.of(targetThread,timeEscaped));
+ }
+ }
+
+ for(Pair<Thread,Long> warnInfo : threadsToWarn){
+ final Thread targetThread = warnInfo.getLeft();
+ final long timeEscaped = warnInfo.getRight();
+
+ final ThreadedRegionizer.ThreadedRegion<?,?> targetRegion;
+
+ synchronized (keepaliveDataLock){
+ targetRegion = otherTickRegionKeepalive.get(targetThread).getLeft();
+ }
+ final ThreadedRegionizer.ThreadedRegion<?,?> targetRegion = targetThread == globalRegionLastKeepalive.getKey() ? null : otherTickRegionKeepalive.get(targetThread).getLeft();
+
+ if (tickCount % WatchdogConfig.warnPeriodTicks == 0){
+ dumpSingleRegion(targetThread,targetRegion,timeEscaped);
@@ -244,10 +256,18 @@ index 0000000000000000000000000000000000000000..8901c50863032f4ae189fe47d44f9fe9
+}
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 3a6d567ee9db93606aec30255400dff4f9f87b05..ac0312d5d496ee5599ff6b002196d98b42385309 100644
index 3a6d567ee9db93606aec30255400dff4f9f87b05..14114e868d3547f2f2d4149312742d5e995e8959 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1223,6 +1223,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1003,6 +1003,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
// Folia end - region threading
public void stopServer() {
+ me.earthme.luminol.utils.LuminolWatchDog.stopTicking(); // Luminol - Watchdog
// Folia start - region threading
// halt scheduler
// don't wait, we may be on a scheduler thread
@@ -1223,6 +1224,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
this.statusIcon = (ServerStatus.Favicon) this.loadStatusIcon().orElse(null); // CraftBukkit - decompile error
this.status = this.buildServerStatus();

View File

@@ -3,10 +3,6 @@ From: MrHua269 <wangxyper@163.com>
Date: Thu, 27 Jun 2024 18:25:12 +0800
Subject: [PATCH] Added linear region format from LinearPurpur
Diff from linear purpur:
Run I/O operations on region file I/O threads instead of using their own linear flusher
Use a simple long to calc if it need to flush to the disk
More simpler linear file checks
diff --git a/build.gradle.kts b/build.gradle.kts
index ab07c307bea0d3b79a6239bdcca9714e1ddf3b28..0f543eccedc7191f8c391583af30231c8b68b2a4 100644
@@ -563,10 +559,10 @@ index 0000000000000000000000000000000000000000..1325ac1d603bc65224860170b5ffad3f
+}
diff --git a/src/main/java/org/stupidcraft/linearpaper/region/AbstractRegionFileFactory.java b/src/main/java/org/stupidcraft/linearpaper/region/AbstractRegionFileFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..3d0f1a7a926253f87a5c35bddb56bce0d261bd8c
index 0000000000000000000000000000000000000000..f28145b5575566a1e3224c3a2e177eee49fcdbbf
--- /dev/null
+++ b/src/main/java/org/stupidcraft/linearpaper/region/AbstractRegionFileFactory.java
@@ -0,0 +1,51 @@
@@ -0,0 +1,52 @@
+package org.stupidcraft.linearpaper.region;
+
+import java.io.IOException;
@@ -598,7 +594,8 @@ index 0000000000000000000000000000000000000000..3d0f1a7a926253f87a5c35bddb56bce0
+ @Contract("_, _, _, _, _, _ -> new")
+ public static @NotNull AbstractRegionFile getAbstractRegionFile(RegionStorageInfo storageKey, @NotNull Path path, Path directory, RegionFileVersion compressionFormat, boolean dsync, boolean canRecalcHeader) throws IOException {
+ final String fullFileName = path.getFileName().toString();
+ final String extensionName = fullFileName.split("\\.")[1];
+ final String[] fullNameSplit = fullFileName.split("\\.");
+ final String extensionName = fullNameSplit[fullNameSplit.length - 1];
+ switch (EnumRegionFileExtension.fromExtension(extensionName)){
+ case UNKNOWN -> {
+ if (RegionFormatConfig.throwOnUnknownExtension){

View File

@@ -102,10 +102,10 @@ index 0000000000000000000000000000000000000000..53b4397997bc9b9b9d88e48304b37a25
+ }
+}
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index e60c8fd49d01a5acb1054b8eebc85612b8192884..08d5e1a81c2a5eda92433ac7bd0ed7250b78e4e2 100644
index 6ead4f65a07defbb7778365ce92d891528dc67aa..87664187c073685573cb93bf51ba84ef26e6bd8c 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -1696,6 +1696,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1697,6 +1697,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
// Folia end - region threading
@@ -123,7 +123,7 @@ index e60c8fd49d01a5acb1054b8eebc85612b8192884..08d5e1a81c2a5eda92433ac7bd0ed725
// Folia - region threading
if (region == null) this.tickRateManager.tick(); // Folia - region threading
this.tickChildren(shouldKeepTicking, region); // Folia - region threading
@@ -1705,6 +1716,20 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1706,6 +1717,20 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
}
// Folia - region threading