From 5095e8a1d6ed08b8e86ab33d58e5d9814b9a31cc Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 16 Mar 2011 00:37:54 +0000 Subject: [PATCH] naming service shutdown stuff --- .../i2p/client/naming/BlockfileNamingService.java | 14 +++++++++++++- .../net/i2p/client/naming/MetaNamingService.java | 6 ++++++ .../src/net/i2p/client/naming/NamingService.java | 2 +- router/java/src/net/i2p/router/Router.java | 1 + 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/core/java/src/net/i2p/client/naming/BlockfileNamingService.java b/core/java/src/net/i2p/client/naming/BlockfileNamingService.java index d7337f3dc2..4fa0477e26 100644 --- a/core/java/src/net/i2p/client/naming/BlockfileNamingService.java +++ b/core/java/src/net/i2p/client/naming/BlockfileNamingService.java @@ -412,6 +412,8 @@ public class BlockfileNamingService extends DummyNamingService { } props.setProperty(PROP_ADDED, Long.toString(_context.clock().now())); synchronized(_bf) { + if (_isClosed) + return false; try { SkipList sl = _bf.getIndex(listname, _stringSerializer, _destSerializer); if (sl == null) @@ -450,6 +452,8 @@ public class BlockfileNamingService extends DummyNamingService { } } synchronized(_bf) { + if (_isClosed) + return false; try { SkipList sl = _bf.getIndex(listname, _stringSerializer, _destSerializer); if (sl == null) @@ -518,6 +522,8 @@ public class BlockfileNamingService extends DummyNamingService { " starting with " + startsWith + " search string " + search + " limit=" + limit + " skip=" + skip); synchronized(_bf) { + if (_isClosed) + return Collections.EMPTY_MAP; try { SkipList sl = _bf.getIndex(listname, _stringSerializer, _destSerializer); if (sl == null) { @@ -575,6 +581,8 @@ public class BlockfileNamingService extends DummyNamingService { } } synchronized(_bf) { + if (_isClosed) + return 0; try { SkipList sl = _bf.getIndex(listname, _stringSerializer, _destSerializer); if (sl == null) @@ -590,6 +598,10 @@ public class BlockfileNamingService extends DummyNamingService { } } + public void shutdown() { + close(); + } + ////////// End NamingService API private void dumpDB() { @@ -619,7 +631,7 @@ public class BlockfileNamingService extends DummyNamingService { } } - public void close() { + private void close() { synchronized(_bf) { try { _bf.close(); diff --git a/core/java/src/net/i2p/client/naming/MetaNamingService.java b/core/java/src/net/i2p/client/naming/MetaNamingService.java index e07073050e..914662adbd 100644 --- a/core/java/src/net/i2p/client/naming/MetaNamingService.java +++ b/core/java/src/net/i2p/client/naming/MetaNamingService.java @@ -179,4 +179,10 @@ public class MetaNamingService extends DummyNamingService { } return rv; } + + public void shutdown() { + for (NamingService ns : _services) { + ns.shutdown(); + } + } } diff --git a/core/java/src/net/i2p/client/naming/NamingService.java b/core/java/src/net/i2p/client/naming/NamingService.java index a86da11f6e..e463f91a68 100644 --- a/core/java/src/net/i2p/client/naming/NamingService.java +++ b/core/java/src/net/i2p/client/naming/NamingService.java @@ -412,7 +412,7 @@ public abstract class NamingService { * Should not be called by others. * @since 0.8.5 */ - public void stop() {} + public void shutdown() {} //// End New API diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java index 5904d04ea0..fa1a3212e9 100644 --- a/router/java/src/net/i2p/router/Router.java +++ b/router/java/src/net/i2p/router/Router.java @@ -934,6 +934,7 @@ public class Router { } } try { _context.clientManager().shutdown(); } catch (Throwable t) { _log.log(Log.CRIT, "Error shutting down the client manager", t); } + try { _context.namingService().shutdown(); } catch (Throwable t) { _log.log(Log.CRIT, "Error shutting down the naming service", 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); }