From e064b0a0e1f46bbd53ee7372c605bc152f7e476d Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Fri, 29 Aug 2008 13:12:55 +0000 Subject: [PATCH] * Shutdown: Call the shutdown hooks before the router shutdown rather than after --- router/java/src/net/i2p/router/Router.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java index 827e0c457e..254db3179d 100644 --- a/router/java/src/net/i2p/router/Router.java +++ b/router/java/src/net/i2p/router/Router.java @@ -796,6 +796,16 @@ public class Router { _isAlive = false; _context.random().saveSeed(); I2PThread.removeOOMEventListener(_oomListener); + // Run the shutdown hooks first in case they want to send some goodbye messages + // Maybe we need a delay after this too? + try { + for (Iterator iter = _shutdownTasks.iterator(); iter.hasNext(); ) { + Runnable task = (Runnable)iter.next(); + task.run(); + } + } catch (Throwable t) { + _log.log(Log.CRIT, "Error running shutdown task", t); + } try { _context.jobQueue().shutdown(); } catch (Throwable t) { _log.log(Log.CRIT, "Error shutting down the job queue", t); } //try { _context.adminManager().shutdown(); } catch (Throwable t) { _log.log(Log.CRIT, "Error shutting down the admin manager", t); } try { _context.statPublisher().shutdown(); } catch (Throwable t) { _log.log(Log.CRIT, "Error shutting down the stats manager", t); } @@ -811,14 +821,6 @@ public class Router { try { _sessionKeyPersistenceHelper.shutdown(); } catch (Throwable t) { _log.log(Log.CRIT, "Error shutting down the session key manager", t); } RouterContext.listContexts().remove(_context); dumpStats(); - try { - for (Iterator iter = _shutdownTasks.iterator(); iter.hasNext(); ) { - Runnable task = (Runnable)iter.next(); - task.run(); - } - } catch (Throwable t) { - _log.log(Log.CRIT, "Error running shutdown task", t); - } finalShutdown(exitCode); } -- GitLab