Wait a while and recheck if a recent ping file is there,
    so that a crashed router doesn't prevent a restart (ticket #633)
This commit is contained in:
zzz
2013-11-22 17:27:49 +00:00
parent dbe0a8240e
commit 9b8d3eb688

View File

@@ -234,13 +234,28 @@ public class Router implements RouterClock.ClockShiftListener {
// for the ping file // for the ping file
// Check for other router but do not start a thread yet so the update doesn't cause // Check for other router but do not start a thread yet so the update doesn't cause
// a NCDFE // a NCDFE
if (!isOnlyRouterRunning()) { for (int i = 0; i < 14; i++) {
_eventLog.addEvent(EventLog.ABORTED, "Another router running"); // Wrapper can start us up too quickly after a crash, the ping file
System.err.println("ERROR: There appears to be another router already running!"); // may still be less than LIVELINESS_DELAY (60s) old.
System.err.println(" Please make sure to shut down old instances before starting up"); // So wait at least 60s to be sure.
System.err.println(" a new one. If you are positive that no other instance is running,"); if (isOnlyRouterRunning()) {
System.err.println(" please delete the file " + getPingFile().getAbsolutePath()); if (i > 0)
System.exit(-1); System.err.println("INFO: No, there wasn't another router already running. Proceeding with startup.");
break;
}
if (i < 13) {
if (i == 0)
System.err.println("WARN: There may be another router already running. Waiting a while to be sure...");
// yes this is ugly to sleep in the constructor.
try { Thread.sleep(5000); } catch (InterruptedException ie) {}
} else {
_eventLog.addEvent(EventLog.ABORTED, "Another router running");
System.err.println("ERROR: There appears to be another router already running!");
System.err.println(" Please make sure to shut down old instances before starting up");
System.err.println(" a new one. If you are positive that no other instance is running,");
System.err.println(" please delete the file " + getPingFile().getAbsolutePath());
System.exit(-1);
}
} }
if (_config.get("router.firstVersion") == null) { if (_config.get("router.firstVersion") == null) {