From fd5fcebae9de4d86b801bb25c69f2f10e88e50cc Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 26 Oct 2008 18:16:18 +0000 Subject: [PATCH] * NetDb: - Fix behavior when router.isHidden=true - Delay StartExplorersJob for 10m at startup - More findbugs cleanups * netdb.jsp: Indicate if hidden --- .../KademliaNetworkDatabaseFacade.java | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java index eb5796a20..e4cdc3f2f 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java @@ -120,6 +120,8 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { */ private final static long ROUTER_INFO_EXPIRATION = 3*24*60*60*1000l; + private final static long EXPLORE_JOB_DELAY = 10*60*1000l; + public KademliaNetworkDatabaseFacade(RouterContext context) { _context = context; _log = _context.logManager().getLog(getClass()); @@ -298,6 +300,13 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { if (_exploreJob == null) _exploreJob = new StartExplorersJob(_context, this); // fire off a group of searches from the explore pool + // Don't start it right away, so we don't send searches for random keys + // out our 0-hop exploratory tunnels (generating direct connections to + // one or more floodfill peers within seconds of startup). + // We're trying to minimize the ff connections to lessen the load on the + // floodfills, and in any case let's try to build some real expl. tunnels first. + // No rush, it only runs every 30m. + _exploreJob.getTiming().setStartAfter(_context.clock().now() + EXPLORE_JOB_DELAY); _context.jobQueue().addJob(_exploreJob); // if configured to do so, periodically try to get newer routerInfo stats if (_harvestJob == null && "true".equals(_context.getProperty(HarvesterJob.PROP_ENABLED))) @@ -530,7 +539,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { if (!_initialized) return; // This isn't really used for anything // writeMyInfo(localRouterInfo); - if (localRouterInfo.isHidden()) return; // DE-nied! + if (_context.router().isHidden()) return; // DE-nied! Hash h = localRouterInfo.getIdentity().getHash(); store(h, localRouterInfo); synchronized (_explicitSendKeys) { @@ -1064,9 +1073,10 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { if (versions.size() > 0) { buf.append("\n"); buf.append("\n"); - for (Iterator iter = versions.keySet().iterator(); iter.hasNext(); ) { - String coreVersion = (String)iter.next(); - Map routerVersions = (Map)versions.get(coreVersion); + for (Iterator iter = versions.entrySet().iterator(); iter.hasNext(); ) { + Map.Entry entry = (Map.Entry)iter.next(); + String coreVersion = (String)entry.getKey(); + Map routerVersions = (Map)entry.getValue(); for (Iterator routerIter = routerVersions.keySet().iterator(); routerIter.hasNext(); ) { String routerVersion = (String)routerIter.next(); Integer num = (Integer)routerVersions.get(routerVersion); @@ -1083,16 +1093,17 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade { private void renderRouterInfo(StringBuffer buf, RouterInfo info, boolean isUs) { String hash = info.getIdentity().getHash().toBase64(); + buf.append(""); if (isUs) { - buf.append(""); buf.append("Our info: ").append(hash).append("
\n"); } else { - buf.append("
"); buf.append("Peer info for: ").append(hash).append("
\n"); } long age = _context.clock().now() - info.getPublished(); - if (age > 0) + if (isUs && _context.router().isHidden()) + buf.append("Hidden, Updated: ").append(DataHelper.formatDuration(age)).append(" ago
\n"); + else if (age > 0) buf.append("Published: ").append(DataHelper.formatDuration(age)).append(" ago
\n"); else buf.append("Published: in ").append(DataHelper.formatDuration(0-age)).append("???
\n");
Core versionRouter versionNumber