From 65dc803fb73068777de39ad4e780c9be6ee1a16b Mon Sep 17 00:00:00 2001 From: jrandom Date: Thu, 16 Mar 2006 21:45:17 +0000 Subject: [PATCH] 2006-03-16 jrandom * Integrate basic hooks for jrobin (http://jrobin.org) into the router console. Selected stats can be harvested automatically and fed into in-memory RRD databases, and those databases can be served up either as PNG images or as RRDtool compatible XML dumps (see oldstats.jsp for details). A base set of stats are harvested by default, but an alternate list can be specified by setting the 'stat.summaries' list on the advanced config. For instance: stat.summaries=bw.recvRate.60000,bw.sendRate.60000 * HTML tweaking for the general config page (thanks void!) * Odd NPE fix (thanks Complication!) --- apps/jrobin/jrobin-1.4.0.jar | Bin 0 -> 177150 bytes apps/routerconsole/java/build.xml | 9 + .../i2p/router/web/RouterConsoleRunner.java | 5 + .../net/i2p/router/web/StatSummarizer.java | 140 ++++++++++++++ .../net/i2p/router/web/SummaryListener.java | 182 ++++++++++++++++++ apps/routerconsole/jsp/config.jsp | 1 + apps/routerconsole/jsp/viewstat.jsp | 37 ++++ .../src/gnu/crypto/hash/Sha256Standalone.java | 40 ++-- core/java/src/net/i2p/stat/Rate.java | 10 + core/java/src/net/i2p/stat/RateStat.java | 5 +- history.txt | 14 +- router/java/src/net/i2p/router/Router.java | 4 +- .../src/net/i2p/router/RouterVersion.java | 4 +- .../net/i2p/router/admin/StatsGenerator.java | 9 + .../OutboundClientMessageOneShotJob.java | 18 +- .../transport/FIFOBandwidthLimiter.java | 2 + .../udp/OutboundMessageFragments.java | 2 +- .../net/i2p/router/tunnel/pool/TestJob.java | 14 +- .../router/tunnel/pool/TunnelPoolManager.java | 4 +- 19 files changed, 468 insertions(+), 32 deletions(-) create mode 100644 apps/jrobin/jrobin-1.4.0.jar create mode 100644 apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java create mode 100644 apps/routerconsole/java/src/net/i2p/router/web/SummaryListener.java create mode 100644 apps/routerconsole/jsp/viewstat.jsp diff --git a/apps/jrobin/jrobin-1.4.0.jar b/apps/jrobin/jrobin-1.4.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..daabacd191be6e7f74eca1e0b616a1cf43da14bc GIT binary patch literal 177150 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

eURckG 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Ð_kj!PiIssh%Eb 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 IP + @@ -34,6 +35,12 @@ + + + + + + @@ -60,6 +67,7 @@ + @@ -86,6 +94,7 @@ + diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index ede14994d..75041f735 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -25,6 +25,7 @@ public class RouterConsoleRunner { static { System.setProperty("org.mortbay.http.Version.paranoid", "true"); + System.setProperty("java.awt.headless", "true"); } public RouterConsoleRunner(String args[]) { @@ -95,6 +96,10 @@ public class RouterConsoleRunner { I2PThread t = new I2PThread(fetcher, "NewsFetcher"); t.setDaemon(true); t.start(); + + I2PThread st = new I2PThread(new StatSummarizer(), "StatSummarizer"); + st.setDaemon(true); + st.start(); } private void initialize(WebApplicationContext context) { diff --git a/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java b/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java new file mode 100644 index 000000000..50d8ba4f5 --- /dev/null +++ b/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java @@ -0,0 +1,140 @@ +package net.i2p.router.web; + +import java.io.*; +import java.util.*; + +import net.i2p.stat.*; +import net.i2p.router.*; + +/** + * + */ +public class StatSummarizer implements Runnable { + private RouterContext _context; + /** list of SummaryListener instances */ + private List _listeners; + private static StatSummarizer _instance; + + public StatSummarizer() { + _context = (RouterContext)RouterContext.listContexts().get(0); // fuck it, only summarize one per jvm + _listeners = new ArrayList(16); + _instance = this; + } + + public static StatSummarizer instance() { return _instance; } + + public void run() { + String specs = ""; + while (_context.router().isAlive()) { + specs = adjustDatabases(specs); + try { Thread.sleep(60*1000); } catch (InterruptedException ie) {} + } + } + + private static final String DEFAULT_DATABASES = "bw.sendRate.60000" + + ",bw.recvRate.60000" + + ",tunnel.testSuccessTime.60000" + + ",udp.outboundActiveCount.60000" + + ",udp.receivePacketSize.60000" + + ",udp.receivePacketSkew.60000" + + ",udp.sendConfirmTime.60000" + + ",udp.sendPacketSize.60000" + + ",router.activePeers.60000" + + ",router.activeSendPeers.60000"; + + private String adjustDatabases(String oldSpecs) { + String spec = _context.getProperty("stat.summaries", DEFAULT_DATABASES); + if ( ( (spec == null) && (oldSpecs == null) ) || + ( (spec != null) && (oldSpecs != null) && (oldSpecs.equals(spec))) ) + return oldSpecs; + + List old = parseSpecs(oldSpecs); + List newSpecs = parseSpecs(spec); + + // remove old ones + for (int i = 0; i < old.size(); i++) { + Rate r = (Rate)old.get(i); + if (!newSpecs.contains(r)) + removeDb(r); + } + // add new ones + StringBuffer buf = new StringBuffer(); + for (int i = 0; i < newSpecs.size(); i++) { + Rate r = (Rate)newSpecs.get(i); + if (!old.contains(r)) + addDb(r); + buf.append(r.getRateStat().getName()).append(".").append(r.getPeriod()); + if (i + 1 < newSpecs.size()) + buf.append(','); + } + return buf.toString(); + } + + private void removeDb(Rate r) { + for (int i = 0; i < _listeners.size(); i++) { + SummaryListener lsnr = (SummaryListener)_listeners.get(i); + if (lsnr.getRate().equals(r)) { + _listeners.remove(i); + lsnr.stopListening(); + return; + } + } + } + private void addDb(Rate r) { + SummaryListener lsnr = new SummaryListener(r); + _listeners.add(lsnr); + lsnr.startListening(); + //System.out.println("Start listening for " + r.getRateStat().getName() + ": " + r.getPeriod()); + } + public boolean renderPng(Rate rate, OutputStream out) throws IOException { return renderPng(rate, out, -1, -1); } + public boolean renderPng(Rate rate, OutputStream out, int width, int height) throws IOException { + for (int i = 0; i < _listeners.size(); i++) { + SummaryListener lsnr = (SummaryListener)_listeners.get(i); + if (lsnr.getRate().equals(rate)) { + lsnr.renderPng(out, width, height); + return true; + } + } + return false; + } + public boolean getXML(Rate rate, OutputStream out) throws IOException { + for (int i = 0; i < _listeners.size(); i++) { + SummaryListener lsnr = (SummaryListener)_listeners.get(i); + if (lsnr.getRate().equals(rate)) { + lsnr.getData().exportXml(out); + out.write(("\n").getBytes()); + out.write(("\n").getBytes()); + return true; + } + } + return false; + } + + /** + * @param specs statName.period,statName.period,statName.period + * @return list of Rate objects + */ + private List parseSpecs(String specs) { + StringTokenizer tok = new StringTokenizer(specs, ","); + List rv = new ArrayList(); + while (tok.hasMoreTokens()) { + String spec = tok.nextToken(); + int split = spec.lastIndexOf('.'); + if ( (split <= 0) || (split + 1 >= spec.length()) ) + continue; + String name = spec.substring(0, split); + String per = spec.substring(split+1); + long period = -1; + try { + period = Long.parseLong(per); + RateStat rs = _context.statManager().getRate(name); + if (rs != null) { + Rate r = rs.getRate(period); + if (r != null) + rv.add(r); + } + } catch (NumberFormatException nfe) {} + } + return rv; + } +} diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryListener.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryListener.java new file mode 100644 index 000000000..3d3094b40 --- /dev/null +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryListener.java @@ -0,0 +1,182 @@ +package net.i2p.router.web; + +import java.io.*; + +import net.i2p.I2PAppContext; +import net.i2p.data.DataHelper; +import net.i2p.stat.Rate; +import net.i2p.stat.RateStat; +import net.i2p.stat.RateSummaryListener; +import net.i2p.util.Log; + +import org.jrobin.core.RrdDb; +import org.jrobin.core.RrdDef; +import org.jrobin.core.RrdBackendFactory; +import org.jrobin.core.RrdMemoryBackendFactory; +import org.jrobin.core.Sample; + +import java.awt.Color; +import org.jrobin.graph.RrdGraph; +import org.jrobin.graph.RrdGraphDef; +import org.jrobin.core.RrdException; + +class SummaryListener implements RateSummaryListener { + private I2PAppContext _context; + private Log _log; + private Rate _rate; + private String _name; + private String _eventName; + private RrdDb _db; + private Sample _sample; + private RrdMemoryBackendFactory _factory; + private SummaryRenderer _renderer; + + static final int PERIODS = 600; + + static { + try { + RrdBackendFactory.setDefaultFactory("MEMORY"); + } catch (RrdException re) { + re.printStackTrace(); + } + } + + public SummaryListener(Rate r) { + _context = I2PAppContext.getGlobalContext(); + _rate = r; + _log = _context.logManager().getLog(SummaryListener.class); + } + + public void add(double totalValue, long eventCount, double totalEventTime, long period) { + if (_db != null) { + // add one value to the db (the average value for the period) + try { + _sample.setTime(now()/1000); + double val = eventCount > 0 ? (totalValue / (double)eventCount) : 0d; + _sample.setValue(_name, val); + _sample.setValue(_eventName, eventCount); + //_sample.setValue(0, val); + //_sample.setValue(1, eventCount); + _sample.update(); + //String names[] = _sample.getDsNames(); + //System.out.println("Add " + val + " over " + eventCount + " for " + _name + // + " [" + names[0] + ", " + names[1] + "]"); + } catch (IOException ioe) { + _log.error("Error adding", ioe); + } catch (RrdException re) { + _log.error("Error adding", re); + } + } + } + + /** + * JRobin can only deal with 20 character data source names, so we need to create a unique, + * munged version from the user/developer-visible name. + * + */ + private static String createName(I2PAppContext ctx, String wanted) { + return ctx.sha().calculateHash(DataHelper.getUTF8(wanted)).toBase64().substring(0,20); + } + + public Rate getRate() { return _rate; } + public void startListening() { + RateStat rs = _rate.getRateStat(); + long period = _rate.getPeriod(); + String baseName = rs.getName() + "." + period; + _name = createName(_context, baseName); + _eventName = createName(_context, baseName + ".events"); + try { + RrdDef def = new RrdDef(_name, now()/1000, period/1000); + long heartbeat = period*3/1000; // max seconds between events + def.addDatasource(_name, "GAUGE", heartbeat, Double.NaN, Double.NaN); + def.addDatasource(_eventName, "GAUGE", heartbeat, 0, Double.NaN); + double xff = 0.5; + int steps = 1; + int rows = PERIODS; + def.addArchive("AVERAGE", xff, steps, rows); + _factory = (RrdMemoryBackendFactory)RrdBackendFactory.getDefaultFactory(); + _db = new RrdDb(def, _factory); + _sample = _db.createSample(); + _renderer = new SummaryRenderer(_context, this); + _rate.setSummaryListener(this); + } catch (RrdException re) { + _log.error("Error starting", re); + } catch (IOException ioe) { + _log.error("Error starting", ioe); + } + } + public void stopListening() { + if (_db == null) return; + try { + _db.close(); + } catch (IOException ioe) { + _log.error("Error closing", ioe); + } + _rate.setSummaryListener(null); + _factory.delete(_db.getPath()); + _db = null; + } + public void renderPng(OutputStream out, int width, int height) throws IOException { _renderer.render(out, width, height); } + public void renderPng(OutputStream out) throws IOException { _renderer.render(out); } + + String getName() { return _name; } + String getEventName() { return _eventName; } + RrdDb getData() { return _db; } + long now() { return _context.clock().now(); } + + public boolean equals(Object obj) { + return ((obj instanceof SummaryListener) && ((SummaryListener)obj)._rate.equals(_rate)); + } + public int hashCode() { return _rate.hashCode(); } +} + +class SummaryRenderer { + private Log _log; + private SummaryListener _listener; + public SummaryRenderer(I2PAppContext ctx, SummaryListener lsnr) { + _log = ctx.logManager().getLog(SummaryRenderer.class); + _listener = lsnr; + } + + public void render(OutputStream out) throws IOException { render(out, -1, -1); } + public void render(OutputStream out, int width, int height) throws IOException { + long end = _listener.now(); + long start = end - _listener.getRate().getPeriod()*SummaryListener.PERIODS; + long begin = System.currentTimeMillis(); + try { + RrdGraphDef def = new RrdGraphDef(); + def.setTimePeriod(start/1000, end/1000); + String title = _listener.getRate().getRateStat().getName() + " averaged for " + + DataHelper.formatDuration(_listener.getRate().getPeriod()); + def.setTitle(title); + String path = _listener.getData().getPath(); + String dsNames[] = _listener.getData().getDsNames(); + def.datasource(_listener.getName(), path, dsNames[0], "AVERAGE", "MEMORY"); + // include the average event count on the plot + //def.datasource(_listener.getName(), path, dsNames[1], "AVERAGE", "MEMORY"); + def.area(dsNames[0], Color.BLUE, _listener.getRate().getRateStat().getDescription()); + //def.line(dsNames[1], Color.RED, "Events per period"); + //System.out.println("rendering: path=" + path + " dsNames[0]=" + dsNames[0] + " dsNames[1]=" + dsNames[1] + " lsnr.getName=" + _listener.getName()); + def.setAntiAliasing(false); + RrdGraph graph = new RrdGraph(def); + //System.out.println("Graph created");em. + byte data[] = null; + if ( (width <= 0) || (height <= 0) ) + data = graph.getPNGBytes(); + else + data = graph.getPNGBytes(width, height); + long timeToPlot = System.currentTimeMillis() - begin; + out.write(data); + //File t = File.createTempFile("jrobinData", ".xml"); + //_listener.getData().dumpXml(new FileOutputStream(t)); + //System.out.println("plotted: " + (data != null ? data.length : 0) + " bytes in " + timeToPlot + // ); // + ", data written to " + t.getAbsolutePath()); + } catch (RrdException re) { + _log.error("Error rendering", re); + throw new IOException("Error plotting: " + re.getMessage()); + } catch (IOException ioe) { + _log.error("Error rendering", ioe); + throw ioe; + } + } +} \ No newline at end of file diff --git a/apps/routerconsole/jsp/config.jsp b/apps/routerconsole/jsp/config.jsp index 3c0f5f876..97474d63c 100644 --- a/apps/routerconsole/jsp/config.jsp +++ b/apps/routerconsole/jsp/config.jsp @@ -44,6 +44,7 @@ Bandwidth share percentage:
Sharing a higher percentage will improve your anonymity and help the network +


Enable load testing: /> diff --git a/apps/routerconsole/jsp/viewstat.jsp b/apps/routerconsole/jsp/viewstat.jsp new file mode 100644 index 000000000..77e46ee62 --- /dev/null +++ b/apps/routerconsole/jsp/viewstat.jsp @@ -0,0 +1,37 @@ +<% +net.i2p.stat.Rate rate = null; +String stat = request.getParameter("stat"); +String period = request.getParameter("period"); +net.i2p.stat.RateStat rs = net.i2p.I2PAppContext.getGlobalContext().statManager().getRate(stat); +boolean rendered = false; +if (rs != null) { + long per = -1; + try { + per = Long.parseLong(period); + rate = rs.getRate(per); + if (rate != null) { + java.io.OutputStream cout = response.getOutputStream(); + String format = request.getParameter("format"); + if ("xml".equals(format)) { + response.setContentType("text/xml"); + rendered = net.i2p.router.web.StatSummarizer.instance().getXML(rate, cout); + } else { + response.setContentType("image/png"); + int width = -1; + int height = -1; + String str = request.getParameter("width"); + if (str != null) try { width = Integer.parseInt(str); } catch (NumberFormatException nfe) {} + str = request.getParameter("height"); + if (str != null) try { height = Integer.parseInt(str); } catch (NumberFormatException nfe) {} + rendered = net.i2p.router.web.StatSummarizer.instance().renderPng(rate, cout, width, height); + } + if (rendered) + cout.close(); + //System.out.println("Rendered period " + per + " for the stat " + stat + "? " + rendered); + } + } catch (NumberFormatException nfe) {} +} +if (!rendered) { + response.sendError(404, "That stat is not available"); +} +%> \ No newline at end of file diff --git a/core/java/src/gnu/crypto/hash/Sha256Standalone.java b/core/java/src/gnu/crypto/hash/Sha256Standalone.java index b10df43a5..a42742e43 100644 --- a/core/java/src/gnu/crypto/hash/Sha256Standalone.java +++ b/core/java/src/gnu/crypto/hash/Sha256Standalone.java @@ -1,7 +1,7 @@ package gnu.crypto.hash; // ---------------------------------------------------------------------------- -// $Id: Sha256.java,v 1.2 2005/10/06 04:24:14 rsdio Exp $ +// $Id: Sha256Standalone.java,v 1.1 2006/02/26 16:30:59 jrandom Exp $ // // Copyright (C) 2003 Free Software Foundation, Inc. // @@ -59,7 +59,7 @@ package gnu.crypto.hash; * renamed from Sha256 to avoid conflicts with JVMs using gnu-crypto as their JCE * provider. * - * @version $Revision: 1.2 $ + * @version $Revision: 1.1 $ */ public class Sha256Standalone extends BaseHash { // Constants and variables @@ -127,10 +127,12 @@ public class Sha256Standalone extends BaseHash { // Class methods // ------------------------------------------------------------------------- + /* public static final int[] G(int hh0, int hh1, int hh2, int hh3, int hh4, int hh5, int hh6, int hh7, byte[] in, int offset) { return sha(hh0, hh1, hh2, hh3, hh4, hh5, hh6, hh7, in, offset); } + */ // Instance methods // ------------------------------------------------------------------------- @@ -143,17 +145,19 @@ public class Sha256Standalone extends BaseHash { // Implementation of concrete methods in BaseHash -------------------------- + private int transformResult[] = new int[8]; protected void transform(byte[] in, int offset) { - int[] result = sha(h0, h1, h2, h3, h4, h5, h6, h7, in, offset); + //int[] result = sha(h0, h1, h2, h3, h4, h5, h6, h7, in, offset); + sha(h0, h1, h2, h3, h4, h5, h6, h7, in, offset, transformResult); - h0 = result[0]; - h1 = result[1]; - h2 = result[2]; - h3 = result[3]; - h4 = result[4]; - h5 = result[5]; - h6 = result[6]; - h7 = result[7]; + h0 = transformResult[0]; + h1 = transformResult[1]; + h2 = transformResult[2]; + h3 = transformResult[3]; + h4 = transformResult[4]; + h5 = transformResult[5]; + h6 = transformResult[6]; + h7 = transformResult[7]; } protected byte[] padBuffer() { @@ -218,8 +222,8 @@ public class Sha256Standalone extends BaseHash { // SHA specific methods ---------------------------------------------------- - private static final synchronized int[] - sha(int hh0, int hh1, int hh2, int hh3, int hh4, int hh5, int hh6, int hh7, byte[] in, int offset) { + private static final synchronized void + sha(int hh0, int hh1, int hh2, int hh3, int hh4, int hh5, int hh6, int hh7, byte[] in, int offset, int out[]) { int A = hh0; int B = hh1; int C = hh2; @@ -255,8 +259,18 @@ public class Sha256Standalone extends BaseHash { A = T + T2; } + /* return new int[] { hh0 + A, hh1 + B, hh2 + C, hh3 + D, hh4 + E, hh5 + F, hh6 + G, hh7 + H }; + */ + out[0] = hh0 + A; + out[1] = hh1 + B; + out[2] = hh2 + C; + out[3] = hh3 + D; + out[4] = hh4 + E; + out[5] = hh5 + F; + out[6] = hh6 + G; + out[7] = hh7 + H; } } diff --git a/core/java/src/net/i2p/stat/Rate.java b/core/java/src/net/i2p/stat/Rate.java index 74b48ed84..1d7fae51b 100644 --- a/core/java/src/net/i2p/stat/Rate.java +++ b/core/java/src/net/i2p/stat/Rate.java @@ -26,6 +26,8 @@ public class Rate { private volatile double _lifetimeTotalValue; private volatile long _lifetimeEventCount; private volatile long _lifetimeTotalEventTime; + private RateSummaryListener _summaryListener; + private RateStat _stat; private volatile long _lastCoalesceDate; private long _creationDate; @@ -108,6 +110,9 @@ public class Rate { public long getPeriod() { return _period; } + + public RateStat getRateStat() { return _stat; } + public void setRateStat(RateStat rs) { _stat = rs; } /** * @@ -203,8 +208,13 @@ public class Rate { _currentEventCount = 0; _currentTotalEventTime = 0; } + if (_summaryListener != null) + _summaryListener.add(_lastTotalValue, _lastEventCount, _lastTotalEventTime, _period); } + public void setSummaryListener(RateSummaryListener listener) { _summaryListener = listener; } + public RateSummaryListener getSummaryListener() { return _summaryListener; } + /** what was the average value across the events in the last period? */ public double getAverageValue() { if ((_lastTotalValue != 0) && (_lastEventCount > 0)) diff --git a/core/java/src/net/i2p/stat/RateStat.java b/core/java/src/net/i2p/stat/RateStat.java index 960721fa9..dc03072ca 100644 --- a/core/java/src/net/i2p/stat/RateStat.java +++ b/core/java/src/net/i2p/stat/RateStat.java @@ -27,8 +27,10 @@ public class RateStat { _description = description; _groupName = group; _rates = new Rate[periods.length]; - for (int i = 0; i < periods.length; i++) + for (int i = 0; i < periods.length; i++) { _rates[i] = new Rate(periods[i]); + _rates[i].setRateStat(this); + } } public void setStatLog(StatLog sl) { _statLog = sl; } @@ -159,6 +161,7 @@ public class RateStat { _rates[i].load(props, curPrefix, treatAsCurrent); } catch (IllegalArgumentException iae) { _rates[i] = new Rate(period); + _rates[i].setRateStat(this); if (_log.shouldLog(Log.WARN)) _log.warn("Rate for " + prefix + " is corrupt, reinitializing that period"); } diff --git a/history.txt b/history.txt index d4b790d29..b5901c9aa 100644 --- a/history.txt +++ b/history.txt @@ -1,4 +1,16 @@ -$Id: history.txt,v 1.430 2006/03/15 17:26:45 jrandom Exp $ +$Id: history.txt,v 1.431 2006/03/15 19:49:22 complication Exp $ + +2006-03-16 jrandom + * Integrate basic hooks for jrobin (http://jrobin.org) into the router + console. Selected stats can be harvested automatically and fed into + in-memory RRD databases, and those databases can be served up either as + PNG images or as RRDtool compatible XML dumps (see oldstats.jsp for + details). A base set of stats are harvested by default, but an + alternate list can be specified by setting the 'stat.summaries' list on + the advanced config. For instance: + stat.summaries=bw.recvRate.60000,bw.sendRate.60000 + * HTML tweaking for the general config page (thanks void!) + * Odd NPE fix (thanks Complication!) 2006-03-15 Complication * Trim out an old, inactive IP second-guessing method diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java index a10644974..1eb8cde1a 100644 --- a/router/java/src/net/i2p/router/Router.java +++ b/router/java/src/net/i2p/router/Router.java @@ -1018,8 +1018,8 @@ class CoalesceStatsJob extends JobImpl { ctx.statManager().createRateStat("bw.sendBps", "How fast we send data (in KBps)", "Bandwidth", new long[] { 60*1000, 5*60*1000, 60*60*1000 }); ctx.statManager().createRateStat("bw.sendRate", "Low level bandwidth send rate, averaged every minute", "Bandwidth", new long[] { 60*1000l, 5*60*1000l, 10*60*1000l, 60*60*1000l }); ctx.statManager().createRateStat("bw.recvRate", "Low level bandwidth receive rate, averaged every minute", "Bandwidth", new long[] { 60*1000l, 5*60*1000l, 10*60*1000l, 60*60*1000l }); - ctx.statManager().createRateStat("router.activePeers", "How many peers we are actively talking with", "Throttle", new long[] { 5*60*1000, 60*60*1000 }); - ctx.statManager().createRateStat("router.activeSendPeers", "How many peers have sent messages to this minute", "Throttle", new long[] { 5*60*1000, 60*60*1000 }); + ctx.statManager().createRateStat("router.activePeers", "How many peers we are actively talking with", "Throttle", new long[] { 60*1000, 5*60*1000, 60*60*1000 }); + ctx.statManager().createRateStat("router.activeSendPeers", "How many peers have sent messages to this minute", "Throttle", new long[] { 60*1000, 5*60*1000, 60*60*1000 }); ctx.statManager().createRateStat("router.highCapacityPeers", "How many high capacity peers we know", "Throttle", new long[] { 5*60*1000, 60*60*1000 }); ctx.statManager().createRateStat("router.fastPeers", "How many fast peers we know", "Throttle", new long[] { 5*60*1000, 60*60*1000 }); } diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index cae3287d1..7830e7078 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -15,9 +15,9 @@ import net.i2p.CoreVersion; * */ public class RouterVersion { - public final static String ID = "$Revision: 1.371 $ $Date: 2006/03/15 17:26:45 $"; + public final static String ID = "$Revision: 1.372 $ $Date: 2006/03/15 19:49:23 $"; public final static String VERSION = "0.6.1.12"; - public final static long BUILD = 9; + public final static long BUILD = 10; public static void main(String args[]) { System.out.println("I2P Router version: " + VERSION + "-" + BUILD); System.out.println("Router ID: " + RouterVersion.ID); diff --git a/router/java/src/net/i2p/router/admin/StatsGenerator.java b/router/java/src/net/i2p/router/admin/StatsGenerator.java index 97932b3c2..1fac4a3a0 100644 --- a/router/java/src/net/i2p/router/admin/StatsGenerator.java +++ b/router/java/src/net/i2p/router/admin/StatsGenerator.java @@ -180,6 +180,15 @@ public class StatsGenerator { buf.append(num(curRate.getExtremeEventCount())); buf.append(")"); } + if (curRate.getSummaryListener() != null) { + buf.append(" render"); + buf.append(" (as XML"); + buf.append(" in a format RRDTool understands)"); + } buf.append(""); if (i + 1 == periods.length) { // last one, so lets display the strict average diff --git a/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java b/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java index 747655e2c..4e190491a 100644 --- a/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java +++ b/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java @@ -16,6 +16,7 @@ import net.i2p.data.Lease; import net.i2p.data.LeaseSet; import net.i2p.data.PublicKey; import net.i2p.data.SessionKey; +import net.i2p.data.Payload; import net.i2p.data.i2cp.MessageId; import net.i2p.data.i2np.DataMessage; @@ -334,7 +335,11 @@ public class OutboundClientMessageOneShotJob extends JobImpl { if (wantACK) _inTunnel = selectInboundTunnel(); - buildClove(); + boolean ok = buildClove(); + if (!ok) { + dieFatal(); + return; + } if (_log.shouldLog(Log.DEBUG)) _log.debug(getJobId() + ": Clove built to " + _toString); long msgExpiration = _overallExpiration; // getContext().clock().now() + OVERALL_TIMEOUT_MS_DEFAULT; @@ -475,7 +480,7 @@ public class OutboundClientMessageOneShotJob extends JobImpl { } /** build the payload clove that will be used for all of the messages, placing the clove in the status structure */ - private void buildClove() { + private boolean buildClove() { PayloadGarlicConfig clove = new PayloadGarlicConfig(); DeliveryInstructions instructions = new DeliveryInstructions(); @@ -492,7 +497,13 @@ public class OutboundClientMessageOneShotJob extends JobImpl { clove.setId(getContext().random().nextLong(I2NPMessage.MAX_ID_VALUE)); DataMessage msg = new DataMessage(getContext()); - msg.setData(_clientMessage.getPayload().getEncryptedData()); + Payload p = _clientMessage.getPayload(); + if (p == null) + return false; + byte d[] = p.getEncryptedData(); + if (d == null) + return false; + msg.setData(d); msg.setMessageExpiration(clove.getExpiration()); clove.setPayload(msg); @@ -504,6 +515,7 @@ public class OutboundClientMessageOneShotJob extends JobImpl { if (_log.shouldLog(Log.DEBUG)) _log.debug(getJobId() + ": Built payload clove with id " + clove.getId()); + return true; } /** diff --git a/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java b/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java index 7c5a00f01..1ce19db3e 100644 --- a/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java +++ b/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java @@ -64,6 +64,8 @@ public class FIFOBandwidthLimiter { _context.statManager().createRateStat("bwLimiter.pendingInboundRequests", "How many inbound requests are ahead of the current one (ignoring ones with 0)?", "BandwidthLimiter", new long[] { 60*1000l, 5*60*1000l, 10*60*1000l, 60*60*1000l }); _context.statManager().createRateStat("bwLimiter.outboundDelayedTime", "How long it takes to honor an outbound request (ignoring ones with that go instantly)?", "BandwidthLimiter", new long[] { 60*1000l, 5*60*1000l, 10*60*1000l, 60*60*1000l }); _context.statManager().createRateStat("bwLimiter.inboundDelayedTime", "How long it takes to honor an inbound request (ignoring ones with that go instantly)?", "BandwidthLimiter", new long[] { 60*1000l, 5*60*1000l, 10*60*1000l, 60*60*1000l }); + _context.statManager().createRateStat("bw.sendBps1s", "How fast we are transmitting for the 1s quantization (period is the number of bytes transmitted)?", "Bandwidth", new long[] { 60*1000l, 10*60*1000l }); + _context.statManager().createRateStat("bw.recvBps1s", "How fast we are receiving for the 1s quantization (period is the number of bytes transmitted)?", "Bandwidth", new long[] { 60*1000l, 10*60*1000l }); _pendingInboundRequests = new ArrayList(16); _pendingOutboundRequests = new ArrayList(16); _lastTotalSent = _totalAllocatedOutboundBytes; diff --git a/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java b/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java index f70f8e2b5..f61041f84 100644 --- a/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java +++ b/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java @@ -160,7 +160,7 @@ public class OutboundMessageFragments { } _activePeers.notifyAll(); } - msg.timestamp("made active along with: " + active); + //msg.timestamp("made active along with: " + active); _context.statManager().addRateData("udp.outboundActiveCount", active, 0); } else { if (_log.shouldLog(Log.WARN)) diff --git a/router/java/src/net/i2p/router/tunnel/pool/TestJob.java b/router/java/src/net/i2p/router/tunnel/pool/TestJob.java index 0728ee4b3..a593b20ed 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TestJob.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TestJob.java @@ -42,19 +42,19 @@ class TestJob extends JobImpl { _log.error("Invalid tunnel test configuration: no pool for " + cfg, new Exception("origin")); getTiming().setStartAfter(getDelay() + ctx.clock().now()); ctx.statManager().createRateStat("tunnel.testFailedTime", "How long did the failure take (max of 60s for full timeout)?", "Tunnels", - new long[] { 10*60*1000l, 60*60*1000l, 3*60*60*1000l, 24*60*60*1000l }); + new long[] { 60*1000, 10*60*1000l, 60*60*1000l, 3*60*60*1000l, 24*60*60*1000l }); ctx.statManager().createRateStat("tunnel.testExploratoryFailedTime", "How long did the failure of an exploratory tunnel take (max of 60s for full timeout)?", "Tunnels", - new long[] { 10*60*1000l, 60*60*1000l, 3*60*60*1000l, 24*60*60*1000l }); + new long[] { 60*1000, 10*60*1000l, 60*60*1000l, 3*60*60*1000l, 24*60*60*1000l }); ctx.statManager().createRateStat("tunnel.testFailedCompletelyTime", "How long did the complete failure take (max of 60s for full timeout)?", "Tunnels", - new long[] { 10*60*1000l, 60*60*1000l, 3*60*60*1000l, 24*60*60*1000l }); + new long[] { 60*1000, 10*60*1000l, 60*60*1000l, 3*60*60*1000l, 24*60*60*1000l }); ctx.statManager().createRateStat("tunnel.testExploratoryFailedCompletelyTime", "How long did the complete failure of an exploratory tunnel take (max of 60s for full timeout)?", "Tunnels", - new long[] { 10*60*1000l, 60*60*1000l, 3*60*60*1000l, 24*60*60*1000l }); + new long[] { 60*1000, 10*60*1000l, 60*60*1000l, 3*60*60*1000l, 24*60*60*1000l }); ctx.statManager().createRateStat("tunnel.testSuccessLength", "How long were the tunnels that passed the test?", "Tunnels", - new long[] { 10*60*1000l, 60*60*1000l, 3*60*60*1000l, 24*60*60*1000l }); + new long[] { 60*1000, 10*60*1000l, 60*60*1000l, 3*60*60*1000l, 24*60*60*1000l }); ctx.statManager().createRateStat("tunnel.testSuccessTime", "How long did tunnel testing take?", "Tunnels", - new long[] { 10*60*1000l, 60*60*1000l, 3*60*60*1000l, 24*60*60*1000l }); + new long[] { 60*1000, 10*60*1000l, 60*60*1000l, 3*60*60*1000l, 24*60*60*1000l }); ctx.statManager().createRateStat("tunnel.testAborted", "Tunnel test could not occur, since there weren't any tunnels to test with", "Tunnels", - new long[] { 10*60*1000l, 60*60*1000l, 3*60*60*1000l, 24*60*60*1000l }); + new long[] { 60*1000, 10*60*1000l, 60*60*1000l, 3*60*60*1000l, 24*60*60*1000l }); } public String getName() { return "Test tunnel"; } public void runJob() { diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java index e63d4f476..55bf0580c 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java @@ -58,10 +58,10 @@ public class TunnelPoolManager implements TunnelManagerFacade { ctx.statManager().createRateStat("tunnel.testSuccessTime", "How long do successful tunnel tests take?", "Tunnels", - new long[] { 10*60*1000l, 60*60*1000l, 3*60*60*1000l, 24*60*60*1000l }); + new long[] { 60*1000, 10*60*1000l, 60*60*1000l, 3*60*60*1000l, 24*60*60*1000l }); ctx.statManager().createRateStat("tunnel.participatingTunnels", "How many tunnels are we participating in?", "Tunnels", - new long[] { 10*60*1000l, 60*60*1000l, 3*60*60*1000l, 24*60*60*1000l }); + new long[] { 60*1000, 10*60*1000l, 60*60*1000l, 3*60*60*1000l, 24*60*60*1000l }); } /** pick an inbound tunnel not bound to a particular destination */