Added safe check for server monitor so it doesn't go off the rails during a network reboot.

This commit is contained in:
Jonathan Williams 2014-12-14 05:54:49 -05:00
parent 9fb2231d76
commit 0111db5610
2 changed files with 13 additions and 2 deletions

View File

@ -390,7 +390,7 @@ public class RedisServerRepository implements ServerRepository
Pipeline pipeline = jedis.pipelined(); Pipeline pipeline = jedis.pipelined();
String setKey = concatenate("serverstatus", "minecraft", _region.toString()); String setKey = concatenate("serverstatus", "minecraft", _region.toString());
String min = "-inf"; String min = "-inf";
String max = jedis.time().get(0); String max = Utility.currentTimeSeconds() + "";
List<Response<String>> responses = new ArrayList<Response<String>>(); List<Response<String>> responses = new ArrayList<Response<String>>();
for (Tuple serverName : jedis.zrangeByScoreWithScores(setKey, min, max)) for (Tuple serverName : jedis.zrangeByScoreWithScores(setKey, min, max))

View File

@ -42,6 +42,8 @@ public class ServerMonitor
private static int _totalPlayers = 0; private static int _totalPlayers = 0;
private static Region _region; private static Region _region;
private static boolean _debug = false;
public static void main (String args[]) public static void main (String args[])
{ {
_region = !new File("eu.dat").exists() ? Region.US : Region.EU; _region = !new File("eu.dat").exists() ? Region.US : Region.EU;
@ -264,7 +266,7 @@ public class ServerMonitor
int requiredJoinable = serverGroup.getRequiredJoinableServers(); int requiredJoinable = serverGroup.getRequiredJoinableServers();
int joinableServers = serverGroup.getJoinableCount(); int joinableServers = serverGroup.getJoinableCount();
int totalServers = serverGroup.getServerCount(); int totalServers = serverGroup.getServerCount();
int serversToAdd = Math.max(requiredTotal - totalServers, requiredJoinable - joinableServers); int serversToAdd = Math.max(0, Math.max(requiredTotal - totalServers, requiredJoinable - joinableServers));
int serversToKill = (totalServers > requiredTotal && joinableServers > requiredJoinable) ? Math.min(joinableServers - requiredJoinable, serverGroup.getEmptyServers().size()) : 0; int serversToKill = (totalServers > requiredTotal && joinableServers > requiredJoinable) ? Math.min(joinableServers - requiredJoinable, serverGroup.getEmptyServers().size()) : 0;
// Minimum 1500 slot bufferzone // Minimum 1500 slot bufferzone
@ -339,6 +341,9 @@ public class ServerMonitor
private static void killServer(final String serverName, final String serverAddress, final String message, final boolean announce) private static void killServer(final String serverName, final String serverAddress, final String message, final boolean announce)
{ {
if (_debug)
return;
String cmd = "/home/mineplex/easyRemoteKillServer.sh"; String cmd = "/home/mineplex/easyRemoteKillServer.sh";
ProcessRunner pr = new ProcessRunner(new String[] {"/bin/sh", cmd, serverAddress, serverName}); ProcessRunner pr = new ProcessRunner(new String[] {"/bin/sh", cmd, serverAddress, serverName});
@ -384,6 +389,9 @@ public class ServerMonitor
{ {
boolean success = false; boolean success = false;
if (_debug)
return true;
Process process = null; Process process = null;
String cmd = "/home/mineplex/isServerOnline.sh"; String cmd = "/home/mineplex/isServerOnline.sh";
@ -442,6 +450,9 @@ public class ServerMonitor
private static void startServer(final DedicatedServer serverSpace, final ServerGroup serverGroup, final int serverNum, final boolean free) private static void startServer(final DedicatedServer serverSpace, final ServerGroup serverGroup, final int serverNum, final boolean free)
{ {
if (_debug)
return;
String cmd = "/home/mineplex/easyRemoteStartServerCustom.sh"; String cmd = "/home/mineplex/easyRemoteStartServerCustom.sh";
final String groupPrefix = serverGroup.getPrefix(); final String groupPrefix = serverGroup.getPrefix();
final String serverName = serverSpace.getName(); final String serverName = serverSpace.getName();