* netdb.jsp: Don't show stats by default

* RebuildRouterInfoJob: Don't run it
    * PublishLocalRouterInfoJob:
      - Delay for 5m at startup
      - Run every 20m (was 7.5m)
This commit is contained in:
zzz
2009-01-24 20:07:41 +00:00
parent d8298c63ab
commit ae0bcc492d
7 changed files with 52 additions and 20 deletions

View File

@ -11,6 +11,7 @@ public class NetDbHelper {
private RouterContext _context;
private Writer _out;
private String _routerPrefix;
private boolean _full = false;
/**
* Configure this bean to query a particular router context
@ -30,6 +31,7 @@ public class NetDbHelper {
public void setWriter(Writer writer) { _out = writer; }
public void setRouter(String r) { _routerPrefix = r; }
public void setFull(String f) { _full = "1".equals(f); };
public String getNetDbSummary() {
try {
@ -37,14 +39,14 @@ public class NetDbHelper {
if (_routerPrefix != null)
_context.netDb().renderRouterInfoHTML(_out, _routerPrefix);
else
_context.netDb().renderStatusHTML(_out);
_context.netDb().renderStatusHTML(_out, _full);
return "";
} else {
ByteArrayOutputStream baos = new ByteArrayOutputStream(32*1024);
if (_routerPrefix != null)
_context.netDb().renderRouterInfoHTML(new OutputStreamWriter(baos), _routerPrefix);
else
_context.netDb().renderStatusHTML(new OutputStreamWriter(baos));
_context.netDb().renderStatusHTML(new OutputStreamWriter(baos), _full);
return new String(baos.toByteArray());
}
} catch (IOException ioe) {

View File

@ -14,6 +14,7 @@
<jsp:useBean class="net.i2p.router.web.NetDbHelper" id="netdbHelper" scope="request" />
<jsp:setProperty name="netdbHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
<jsp:setProperty name="netdbHelper" property="writer" value="<%=out%>" />
<jsp:setProperty name="netdbHelper" property="full" value="<%=request.getParameter("f")%>" />
<jsp:setProperty name="netdbHelper" property="router" value="<%=request.getParameter("r")%>" />
<jsp:getProperty name="netdbHelper" property="netDbSummary" />
</div>

View File

@ -62,4 +62,5 @@ public abstract class NetworkDatabaseFacade implements Service {
public int getKnownRouters() { return 0; }
public int getKnownLeaseSets() { return 0; }
public void renderRouterInfoHTML(Writer out, String s) throws IOException {}
public void renderStatusHTML(Writer out, boolean b) throws IOException {}
}

View File

@ -20,12 +20,12 @@ import net.i2p.router.RouterContext;
import net.i2p.util.Log;
/**
* Publish the local router's RouterInfo every 5 to 10 minutes
* Publish the local router's RouterInfo periodically
*
*/
public class PublishLocalRouterInfoJob extends JobImpl {
private Log _log;
final static long PUBLISH_DELAY = 5*60*1000; // every 5 to 10 minutes (since we randomize)
final static long PUBLISH_DELAY = 20*60*1000;
public PublishLocalRouterInfoJob(RouterContext ctx) {
super(ctx);
@ -67,6 +67,6 @@ public class PublishLocalRouterInfoJob extends JobImpl {
} catch (DataFormatException dfe) {
_log.error("Error signing the updated local router info!", dfe);
}
requeue(PUBLISH_DELAY + getContext().random().nextInt((int)PUBLISH_DELAY));
requeue((PUBLISH_DELAY/2) + getContext().random().nextInt((int)PUBLISH_DELAY));
}
}

View File

@ -125,6 +125,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
private final static long ROUTER_INFO_EXPIRATION_SHORT = 90*60*1000l;
private final static long EXPLORE_JOB_DELAY = 10*60*1000l;
private final static long PUBLISH_JOB_DELAY = 5*60*1000l;
public KademliaNetworkDatabaseFacade(RouterContext context) {
_context = context;
@ -326,7 +327,9 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
}
// periodically update and resign the router's 'published date', which basically
// serves as a version
_context.jobQueue().addJob(new PublishLocalRouterInfoJob(_context));
Job plrij = new PublishLocalRouterInfoJob(_context);
plrij.getTiming().setStartAfter(_context.clock().now() + PUBLISH_JOB_DELAY);
_context.jobQueue().addJob(plrij);
try {
publish(ri);
} catch (IllegalArgumentException iae) {
@ -970,7 +973,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
StringBuffer buf = new StringBuffer(4*1024);
buf.append("<h2>Network Database RouterInfo Lookup</h2>\n");
if (".".equals(routerPrefix)) {
renderRouterInfo(buf, _context.router().getRouterInfo(), true);
renderRouterInfo(buf, _context.router().getRouterInfo(), true, true);
} else {
boolean notFound = true;
Set routers = getRouters();
@ -978,7 +981,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
RouterInfo ri = (RouterInfo)iter.next();
Hash key = ri.getIdentity().getHash();
if (key.toBase64().startsWith(routerPrefix)) {
renderRouterInfo(buf, ri, false);
renderRouterInfo(buf, ri, false, true);
notFound = false;
}
}
@ -990,7 +993,14 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
}
public void renderStatusHTML(Writer out) throws IOException {
StringBuffer buf = new StringBuffer(getKnownRouters() * 2048);
renderStatusHTML(out, true);
}
public void renderStatusHTML(Writer out, boolean full) throws IOException {
int size = getKnownRouters() * 512;
if (full)
size *= 4;
StringBuffer buf = new StringBuffer(size);
buf.append("<h2>Network Database Contents</h2>\n");
if (!_initialized) {
buf.append("<i>Not initialized</i>\n");
@ -1044,10 +1054,15 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
}
Hash us = _context.routerHash();
out.write("<h3>Routers</h3>\n");
out.write("<a name=\"routers\" /><h3>Routers (<a href=\"netdb.jsp");
if (full)
out.write("#routers\" >view without");
else
out.write("?f=1#routers\" >view with");
out.write(" stats</a>)</h3>\n");
RouterInfo ourInfo = _context.router().getRouterInfo();
renderRouterInfo(buf, ourInfo, true);
renderRouterInfo(buf, ourInfo, true, true);
out.write(buf.toString());
buf.setLength(0);
@ -1061,7 +1076,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
Hash key = ri.getIdentity().getHash();
boolean isUs = key.equals(us);
if (!isUs) {
renderRouterInfo(buf, ri, false);
renderRouterInfo(buf, ri, false, full);
out.write(buf.toString());
buf.setLength(0);
String coreVersion = ri.getOption("coreVersion");
@ -1102,7 +1117,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
out.flush();
}
private void renderRouterInfo(StringBuffer buf, RouterInfo info, boolean isUs) {
private void renderRouterInfo(StringBuffer buf, RouterInfo info, boolean isUs, boolean full) {
String hash = info.getIdentity().getHash().toBase64();
buf.append("<a name=\"").append(hash.substring(0, 6)).append("\" />");
if (isUs) {
@ -1129,13 +1144,18 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
}
}
buf.append("</i><br />\n");
buf.append("Stats: <br /><i><code>\n");
for (Iterator iter = info.getOptions().keySet().iterator(); iter.hasNext(); ) {
String key = (String)iter.next();
String val = info.getOption(key);
buf.append(DataHelper.stripHTML(key)).append(" = ").append(DataHelper.stripHTML(val)).append("<br />\n");
if (full) {
buf.append("Stats: <br /><i><code>\n");
for (Iterator iter = info.getOptions().keySet().iterator(); iter.hasNext(); ) {
String key = (String)iter.next();
String val = info.getOption(key);
buf.append(DataHelper.stripHTML(key)).append(" = ").append(DataHelper.stripHTML(val)).append("<br />\n");
}
buf.append("</code></i>\n");
} else {
buf.append("<a href=\"netdb.jsp?r=").append(hash.substring(0, 6)).append("\" >Full entry</a>\n");
}
buf.append("</code></i><hr />\n");
buf.append("<hr />\n");
}
}

View File

@ -28,6 +28,13 @@ import net.i2p.router.RouterContext;
import net.i2p.util.Log;
/**
* This used be called from StartAcceptingClientsJob but is now disabled.
* It is still called once from LoadRouterInfoJob (but not run as a Job).
*
* The following comments appear to be incorrect...
* it rebuilds if the router.info file does not exist.
* There is no check for a router.info.rebuild file.
*
* If the file router.info.rebuild exists, rebuild the router info and republish.
* This is useful for dhcp or other situations where the router addresses change -
* simply create the router.info.rebuild file after modifying router.config and within

View File

@ -28,7 +28,8 @@ public class StartAcceptingClientsJob extends JobImpl {
getContext().clientManager().startup();
getContext().jobQueue().addJob(new ReadConfigJob(getContext()));
getContext().jobQueue().addJob(new RebuildRouterInfoJob(getContext()));
// pointless
//getContext().jobQueue().addJob(new RebuildRouterInfoJob(getContext()));
getContext().jobQueue().allowParallelOperation();
}
}