From eef8c06b39f22074eaed12f264c704783cd08ff9 Mon Sep 17 00:00:00 2001 From: jrandom <jrandom> Date: Mon, 23 Aug 2004 21:34:22 +0000 Subject: [PATCH] new shutdown(exitCode) usage --- .../java/src/net/i2p/router/JobQueueRunner.java | 2 +- router/java/src/net/i2p/router/Router.java | 16 ++++++++++------ .../src/net/i2p/router/admin/AdminRunner.java | 3 ++- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/router/java/src/net/i2p/router/JobQueueRunner.java b/router/java/src/net/i2p/router/JobQueueRunner.java index f5ea41a329..e75ef3b0d0 100644 --- a/router/java/src/net/i2p/router/JobQueueRunner.java +++ b/router/java/src/net/i2p/router/JobQueueRunner.java @@ -109,7 +109,7 @@ class JobQueueRunner implements Runnable { if (_log.shouldLog(Log.CRIT)) _log.log(Log.CRIT, "Router ran out of memory, shutting down", oom); _log.log(Log.CRIT, _currentJob.getClass().getName()); - _context.router().shutdown(); + _context.router().shutdown(Router.EXIT_OOM); } catch (Throwable t) { System.err.println("***Router ran out of memory, shutting down hard"); } diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java index 17c02cde5c..345b935d5b 100644 --- a/router/java/src/net/i2p/router/Router.java +++ b/router/java/src/net/i2p/router/Router.java @@ -106,7 +106,7 @@ public class Router { // gobble } } - shutdown(); + shutdown(EXIT_OOM); } }; _shutdownHook = new ShutdownHook(); @@ -534,7 +534,11 @@ public class Router { buf.setLength(0); } - public void shutdown() { + public static final int EXIT_GRACEFUL = 2; + public static final int EXIT_HARD = 3; + public static final int EXIT_OOM = 10; + + public void shutdown(int exitCode) { _isAlive = false; I2PThread.removeOOMEventListener(_oomListener); try { _context.jobQueue().shutdown(); } catch (Throwable t) { _log.log(Log.CRIT, "Error shutting down the job queue", t); } @@ -550,11 +554,11 @@ public class Router { try { _sessionKeyPersistenceHelper.shutdown(); } catch (Throwable t) { _log.log(Log.CRIT, "Error shutting down the session key manager", t); } _context.listContexts().remove(_context); dumpStats(); - _log.log(Log.CRIT, "Shutdown complete", new Exception("Shutdown")); + _log.log(Log.CRIT, "Shutdown(" + exitCode + ") complete", new Exception("Shutdown")); try { _context.logManager().shutdown(); } catch (Throwable t) { } if (_killVMOnEnd) { try { Thread.sleep(1000); } catch (InterruptedException ie) {} - Runtime.getRuntime().halt(-1); + Runtime.getRuntime().halt(exitCode); } } @@ -603,7 +607,7 @@ public class Router { if (_context.tunnelManager().getParticipatingCount() <= 0) { if (_log.shouldLog(Log.CRIT)) _log.log(Log.CRIT, "Graceful shutdown progress - no more tunnels, safe to die"); - shutdown(); + shutdown(EXIT_GRACEFUL); return; } else { try { @@ -693,7 +697,7 @@ public class Router { public void run() { setName("Router " + _id + " shutdown"); _log.log(Log.CRIT, "Shutting down the router..."); - shutdown(); + shutdown(EXIT_HARD); } } diff --git a/router/java/src/net/i2p/router/admin/AdminRunner.java b/router/java/src/net/i2p/router/admin/AdminRunner.java index f8e16e5606..471fb148fa 100644 --- a/router/java/src/net/i2p/router/admin/AdminRunner.java +++ b/router/java/src/net/i2p/router/admin/AdminRunner.java @@ -11,6 +11,7 @@ import java.util.Set; import net.i2p.data.Hash; import net.i2p.router.RouterContext; +import net.i2p.router.Router; import net.i2p.util.I2PThread; import net.i2p.util.Log; @@ -135,7 +136,7 @@ class AdminRunner implements Runnable { I2PThread t = new I2PThread(new Runnable() { public void run() { try { Thread.sleep(30*1000); } catch (InterruptedException ie) {} - _context.router().shutdown(); + _context.router().shutdown(Router.EXIT_HARD); } }); t.start(); -- GitLab