mirror of
https://github.com/PaperMC/Paper.git
synced 2025-02-14 11:31:51 +01:00
Don't process watchdog until server has fully started and ticked.
I think adjusting watchdog settings may of caused instant crashes. Fixes #3209
This commit is contained in:
parent
cd84dc9e5d
commit
a6dbadb9d0
@ -36,7 +36,7 @@ We have to ensure Thread Death propagates correctly though to stop main complete
|
|||||||
This is to ensure that if main isn't truely stuck, it's not manipulating state we are trying to save.
|
This is to ensure that if main isn't truely stuck, it's not manipulating state we are trying to save.
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/CrashReport.java b/src/main/java/net/minecraft/server/CrashReport.java
|
diff --git a/src/main/java/net/minecraft/server/CrashReport.java b/src/main/java/net/minecraft/server/CrashReport.java
|
||||||
index 3de19c99..c7dc8787 100644
|
index 3de19c998b..c7dc8787cc 100644
|
||||||
--- a/src/main/java/net/minecraft/server/CrashReport.java
|
--- a/src/main/java/net/minecraft/server/CrashReport.java
|
||||||
+++ b/src/main/java/net/minecraft/server/CrashReport.java
|
+++ b/src/main/java/net/minecraft/server/CrashReport.java
|
||||||
@@ -0,0 +0,0 @@ public class CrashReport {
|
@@ -0,0 +0,0 @@ public class CrashReport {
|
||||||
@ -48,7 +48,7 @@ index 3de19c99..c7dc8787 100644
|
|||||||
throwable = throwable.getCause();
|
throwable = throwable.getCause();
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
|
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
|
||||||
index 1ef7890d..e62ca054 100644
|
index 1ef7890da5..e62ca0543f 100644
|
||||||
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
|
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
|
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
|
||||||
@@ -0,0 +0,0 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
|
@@ -0,0 +0,0 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
|
||||||
@ -61,7 +61,7 @@ index 1ef7890d..e62ca054 100644
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
index 7bfadb35..99bc8da3 100644
|
index 7bfadb35d2..f68494b030 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/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 IAsyncTaskHandlerReentrant<TickTas
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
||||||
@ -114,13 +114,13 @@ index 7bfadb35..99bc8da3 100644
|
|||||||
|
|
||||||
public String getServerIp() {
|
public String getServerIp() {
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
||||||
// Spigot End
|
this.a(this.serverPing);
|
||||||
|
|
||||||
public void run() {
|
// Spigot start
|
||||||
+ boolean isThreadDeath = false; // Paper
|
+ org.spigotmc.WatchdogThread.tick(); // Paper
|
||||||
try {
|
org.spigotmc.WatchdogThread.hasStarted = true; // Paper
|
||||||
if (this.init()) {
|
Arrays.fill( recentTps, 20 );
|
||||||
this.nextTick = SystemUtils.getMonotonicMillis();
|
long start = System.nanoTime(), curTime, tickSection = start; // Paper - Further improve server tick loop
|
||||||
@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
@@ -0,0 +0,0 @@ public abstract class MinecraftServer extends IAsyncTaskHandlerReentrant<TickTas
|
||||||
this.a((CrashReport) null);
|
this.a((CrashReport) null);
|
||||||
}
|
}
|
||||||
@ -167,7 +167,7 @@ index 7bfadb35..99bc8da3 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
|
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
|
||||||
index dfe62515..160476fa 100644
|
index dfe6251576..160476fa29 100644
|
||||||
--- a/src/main/java/net/minecraft/server/PlayerList.java
|
--- a/src/main/java/net/minecraft/server/PlayerList.java
|
||||||
+++ b/src/main/java/net/minecraft/server/PlayerList.java
|
+++ b/src/main/java/net/minecraft/server/PlayerList.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class PlayerList {
|
@@ -0,0 +0,0 @@ public abstract class PlayerList {
|
||||||
@ -180,7 +180,7 @@ index dfe62515..160476fa 100644
|
|||||||
|
|
||||||
// Paper start - Remove from collideRule team if needed
|
// Paper start - Remove from collideRule team if needed
|
||||||
diff --git a/src/main/java/net/minecraft/server/SystemUtils.java b/src/main/java/net/minecraft/server/SystemUtils.java
|
diff --git a/src/main/java/net/minecraft/server/SystemUtils.java b/src/main/java/net/minecraft/server/SystemUtils.java
|
||||||
index dc6d0306..bc8b9046 100644
|
index dc6d030621..bc8b904660 100644
|
||||||
--- a/src/main/java/net/minecraft/server/SystemUtils.java
|
--- a/src/main/java/net/minecraft/server/SystemUtils.java
|
||||||
+++ b/src/main/java/net/minecraft/server/SystemUtils.java
|
+++ b/src/main/java/net/minecraft/server/SystemUtils.java
|
||||||
@@ -0,0 +0,0 @@ public class SystemUtils {
|
@@ -0,0 +0,0 @@ public class SystemUtils {
|
||||||
@ -192,7 +192,7 @@ index dc6d0306..bc8b9046 100644
|
|||||||
SystemUtils.c.shutdown();
|
SystemUtils.c.shutdown();
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
||||||
index d554d4cf..46e19d91 100644
|
index d554d4cf0f..46e19d916c 100644
|
||||||
--- a/src/main/java/net/minecraft/server/World.java
|
--- a/src/main/java/net/minecraft/server/World.java
|
||||||
+++ b/src/main/java/net/minecraft/server/World.java
|
+++ b/src/main/java/net/minecraft/server/World.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
|
@@ -0,0 +0,0 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
|
||||||
@ -212,7 +212,7 @@ index d554d4cf..46e19d91 100644
|
|||||||
String msg = "Entity threw exception at " + entity.world.getWorld().getName() + ":" + entity.locX() + "," + entity.locY() + "," + entity.locZ();
|
String msg = "Entity threw exception at " + entity.world.getWorld().getName() + ":" + entity.locX() + "," + entity.locY() + "," + entity.locZ();
|
||||||
System.err.println(msg);
|
System.err.println(msg);
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
index 8cc0f66c..dcc44be6 100644
|
index 8cc0f66ce5..dcc44be613 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
@@ -0,0 +0,0 @@ public final class CraftServer implements Server {
|
@@ -0,0 +0,0 @@ public final class CraftServer implements Server {
|
||||||
@ -225,7 +225,7 @@ index 8cc0f66c..dcc44be6 100644
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java b/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java b/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java
|
||||||
index 449e99d1..899a5252 100644
|
index 449e99d1b6..899a525209 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java
|
--- a/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/util/ServerShutdownThread.java
|
||||||
@@ -0,0 +0,0 @@ public class ServerShutdownThread extends Thread {
|
@@ -0,0 +0,0 @@ public class ServerShutdownThread extends Thread {
|
||||||
@ -256,7 +256,7 @@ index 449e99d1..899a5252 100644
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/org/spigotmc/RestartCommand.java b/src/main/java/org/spigotmc/RestartCommand.java
|
diff --git a/src/main/java/org/spigotmc/RestartCommand.java b/src/main/java/org/spigotmc/RestartCommand.java
|
||||||
index aefea3a9..123de5ac 100644
|
index aefea3a9a8..123de5ac90 100644
|
||||||
--- a/src/main/java/org/spigotmc/RestartCommand.java
|
--- a/src/main/java/org/spigotmc/RestartCommand.java
|
||||||
+++ b/src/main/java/org/spigotmc/RestartCommand.java
|
+++ b/src/main/java/org/spigotmc/RestartCommand.java
|
||||||
@@ -0,0 +0,0 @@ public class RestartCommand extends Command
|
@@ -0,0 +0,0 @@ public class RestartCommand extends Command
|
||||||
@ -269,7 +269,7 @@ index aefea3a9..123de5ac 100644
|
|||||||
String[] split = restartScript.split( " " );
|
String[] split = restartScript.split( " " );
|
||||||
if ( split.length > 0 && new File( split[0] ).isFile() )
|
if ( split.length > 0 && new File( split[0] ).isFile() )
|
||||||
diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java
|
diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java
|
||||||
index 5bdcdcf9..acc880c7 100644
|
index 5bdcdcf9e8..963bd001f4 100644
|
||||||
--- a/src/main/java/org/spigotmc/WatchdogThread.java
|
--- a/src/main/java/org/spigotmc/WatchdogThread.java
|
||||||
+++ b/src/main/java/org/spigotmc/WatchdogThread.java
|
+++ b/src/main/java/org/spigotmc/WatchdogThread.java
|
||||||
@@ -0,0 +0,0 @@ public class WatchdogThread extends Thread
|
@@ -0,0 +0,0 @@ public class WatchdogThread extends Thread
|
||||||
@ -278,7 +278,7 @@ index 5bdcdcf9..acc880c7 100644
|
|||||||
long currentTime = monotonicMillis();
|
long currentTime = monotonicMillis();
|
||||||
- if ( lastTick != 0 && currentTime > lastTick + earlyWarningEvery && !Boolean.getBoolean("disable.watchdog") )
|
- if ( lastTick != 0 && currentTime > lastTick + earlyWarningEvery && !Boolean.getBoolean("disable.watchdog") )
|
||||||
+ MinecraftServer server = MinecraftServer.getServer();
|
+ MinecraftServer server = MinecraftServer.getServer();
|
||||||
+ if ( !server.isRunning() || (lastTick != 0 && currentTime > lastTick + earlyWarningEvery && !Boolean.getBoolean("disable.watchdog")) )
|
+ if (lastTick != 0 && hasStarted && (!server.isRunning() || (currentTime > lastTick + earlyWarningEvery && !Boolean.getBoolean("disable.watchdog")) ))
|
||||||
{
|
{
|
||||||
- boolean isLongTimeout = currentTime > lastTick + timeoutTime;
|
- boolean isLongTimeout = currentTime > lastTick + timeoutTime;
|
||||||
+ boolean isLongTimeout = currentTime > lastTick + timeoutTime || (!server.isRunning() && !server.hasStopped() && currentTime > lastTick + 1000);
|
+ boolean isLongTimeout = currentTime > lastTick + timeoutTime || (!server.isRunning() && !server.hasStopped() && currentTime > lastTick + 1000);
|
||||||
|
Loading…
Reference in New Issue
Block a user