Make watchdog thread not hold on to server for 60 seconds
This commit is contained in:
parent
d10ff8a24e
commit
21dcf9d3df
|
|
@ -9,25 +9,29 @@ import org.apache.logging.log4j.Logger;
|
||||||
import java.lang.management.ManagementFactory;
|
import java.lang.management.ManagementFactory;
|
||||||
import java.lang.management.ThreadInfo;
|
import java.lang.management.ThreadInfo;
|
||||||
import java.lang.management.ThreadMXBean;
|
import java.lang.management.ThreadMXBean;
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class IntegratedWatchdog extends Thread {
|
public class IntegratedWatchdog extends Thread {
|
||||||
private static final Logger LOGGER = LogManager.getLogger();
|
private static final Logger LOGGER = LogManager.getLogger();
|
||||||
|
|
||||||
private final MinecraftServer server;
|
private final WeakReference<MinecraftServer> server;
|
||||||
|
|
||||||
private static final long MAX_TICK_DELTA = 40*1000;
|
private static final long MAX_TICK_DELTA = 40*1000;
|
||||||
|
|
||||||
public IntegratedWatchdog(MinecraftServer server) {
|
public IntegratedWatchdog(MinecraftServer server) {
|
||||||
this.server = server;
|
this.server = new WeakReference<>(server);
|
||||||
this.setDaemon(true);
|
this.setDaemon(true);
|
||||||
this.setUncaughtExceptionHandler(new DefaultUncaughtExceptionHandlerWithName(LOGGER));
|
this.setUncaughtExceptionHandler(new DefaultUncaughtExceptionHandlerWithName(LOGGER));
|
||||||
this.setName("ModernFix integrated server watchdog");
|
this.setName("ModernFix integrated server watchdog");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
while(server.isRunning()) {
|
while(true) {
|
||||||
long nextTick = this.server.getNextTickTime();
|
MinecraftServer server = this.server.get();
|
||||||
|
if(server == null || !server.isRunning())
|
||||||
|
return;
|
||||||
|
long nextTick = server.getNextTickTime();
|
||||||
long curTime = Util.getMillis();
|
long curTime = Util.getMillis();
|
||||||
long delta = curTime - nextTick;
|
long delta = curTime - nextTick;
|
||||||
if(delta > MAX_TICK_DELTA) {
|
if(delta > MAX_TICK_DELTA) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user