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.ThreadInfo;
|
||||
import java.lang.management.ThreadMXBean;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class IntegratedWatchdog extends Thread {
|
||||
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;
|
||||
|
||||
public IntegratedWatchdog(MinecraftServer server) {
|
||||
this.server = server;
|
||||
this.server = new WeakReference<>(server);
|
||||
this.setDaemon(true);
|
||||
this.setUncaughtExceptionHandler(new DefaultUncaughtExceptionHandlerWithName(LOGGER));
|
||||
this.setName("ModernFix integrated server watchdog");
|
||||
}
|
||||
|
||||
public void run() {
|
||||
while(server.isRunning()) {
|
||||
long nextTick = this.server.getNextTickTime();
|
||||
while(true) {
|
||||
MinecraftServer server = this.server.get();
|
||||
if(server == null || !server.isRunning())
|
||||
return;
|
||||
long nextTick = server.getNextTickTime();
|
||||
long curTime = Util.getMillis();
|
||||
long delta = curTime - nextTick;
|
||||
if(delta > MAX_TICK_DELTA) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user