From 205d8de2817df7b44abb7e907838b383b9416867 Mon Sep 17 00:00:00 2001 From: jrandom Date: Thu, 12 Jan 2006 19:35:54 +0000 Subject: [PATCH] 2005-01-12 jrandom * Only create the loadtest.log if requested to do so (thanks zzz!) * Make sure we cleanly take into consideration the appropriate data points when filtering out duplicate messages in the message validator, and report the right bloom filter false positives rate (not used for anything except debugging) --- .../org/xlattice/crypto/filters/BloomSHA1.java | 3 ++- history.txt | 9 ++++++++- .../src/net/i2p/router/LoadTestManager.java | 18 ++++++++++++------ .../src/net/i2p/router/MessageValidator.java | 15 ++++++++------- .../java/src/net/i2p/router/RouterVersion.java | 4 ++-- 5 files changed, 32 insertions(+), 17 deletions(-) diff --git a/core/java/src/org/xlattice/crypto/filters/BloomSHA1.java b/core/java/src/org/xlattice/crypto/filters/BloomSHA1.java index 17e984080..7c020306c 100644 --- a/core/java/src/org/xlattice/crypto/filters/BloomSHA1.java +++ b/core/java/src/org/xlattice/crypto/filters/BloomSHA1.java @@ -112,6 +112,7 @@ public class BloomSHA1 { for (int i = 0; i < filterWords; i++) { filter[i] = 0; } + count = 0; } /** Synchronized version */ public void clear() { @@ -198,7 +199,7 @@ public class BloomSHA1 { public final double falsePositives(int n) { // (1 - e(-kN/M))^k return java.lang.Math.pow ( - (1l - java.lang.Math.exp( ((double)k) * (long)n / (long)filterBits)), (long)k); + (1l - java.lang.Math.exp(0d- ((double)k) * (long)n / (long)filterBits)), (long)k); } public final double falsePositives() { diff --git a/history.txt b/history.txt index 093a46304..af87856fa 100644 --- a/history.txt +++ b/history.txt @@ -1,4 +1,11 @@ -$Id: history.txt,v 1.384 2006/01/11 18:19:38 jrandom Exp $ +$Id: history.txt,v 1.385 2006/01/12 04:59:57 cervantes Exp $ + +2005-01-12 jrandom + * Only create the loadtest.log if requested to do so (thanks zzz!) + * Make sure we cleanly take into consideration the appropriate data + points when filtering out duplicate messages in the message validator, + and report the right bloom filter false positives rate (not used for + anything except debugging) 2005-01-12 cervantes * Syndie CSS tweaks to removed some redundant declarations, improve font diff --git a/router/java/src/net/i2p/router/LoadTestManager.java b/router/java/src/net/i2p/router/LoadTestManager.java index fa858bfa6..c164ff5c8 100644 --- a/router/java/src/net/i2p/router/LoadTestManager.java +++ b/router/java/src/net/i2p/router/LoadTestManager.java @@ -45,15 +45,21 @@ public class LoadTestManager { private Writer _out; private List _untestedPeers; private List _active; + + private static final String PROP_LOG_DATA = "router.loadTestLog"; + private static final String DEFAULT_LOG_DATA = "false"; + public LoadTestManager(RouterContext ctx) { _context = ctx; _log = ctx.logManager().getLog(LoadTestManager.class); _active = Collections.synchronizedList(new ArrayList()); - try { - _out = new BufferedWriter(new FileWriter("loadtest.log", true)); - _out.write("startup at " + ctx.clock().now() + "\n"); - } catch (IOException ioe) { - _log.log(Log.CRIT, "error creating log", ioe); + if (Boolean.valueOf(ctx.getProperty(PROP_LOG_DATA, DEFAULT_LOG_DATA)).booleanValue()) { + try { + _out = new BufferedWriter(new FileWriter("loadtest.log", true)); + _out.write("startup at " + ctx.clock().now() + "\n"); + } catch (IOException ioe) { + _log.log(Log.CRIT, "error creating log", ioe); + } } _context.statManager().createRateStat("test.lifetimeSuccessful", "How many messages we can pump through a load test during a tunnel's lifetime", "test", new long[] { 60*1000, 5*60*1000, 60*60*1000 }); _context.statManager().createRateStat("test.lifetimeFailed", "How many messages we fail to pump through (period == successful)", "test", new long[] { 60*1000, 5*60*1000, 60*60*1000 }); @@ -373,7 +379,7 @@ public class LoadTestManager { } private void log(LoadTestTunnelConfig tunnel, String msg) { - //if (!_log.shouldLog(Log.INFO)) return; + if (_out == null) return; StringBuffer buf = new StringBuffer(128); if (tunnel.getInbound() == null) { for (int i = 0; i < tunnel.getLength()-1; i++) { diff --git a/router/java/src/net/i2p/router/MessageValidator.java b/router/java/src/net/i2p/router/MessageValidator.java index 8df7b9901..a5c0a8217 100644 --- a/router/java/src/net/i2p/router/MessageValidator.java +++ b/router/java/src/net/i2p/router/MessageValidator.java @@ -40,8 +40,8 @@ public class MessageValidator { boolean isDuplicate = noteReception(messageId, expiration); if (isDuplicate) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Rejecting message " + messageId + " because it is a duplicate", new Exception("Duplicate origin")); + if (_log.shouldLog(Log.INFO)) + _log.info("Rejecting message " + messageId + " because it is a duplicate", new Exception("Duplicate origin")); _context.statManager().addRateData("router.duplicateMessageId", 1, 0); return "duplicate"; } else { @@ -56,13 +56,13 @@ public class MessageValidator { public String validateMessage(long expiration) { long now = _context.clock().now(); if (now - Router.CLOCK_FUDGE_FACTOR >= expiration) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Rejecting message because it expired " + (now-expiration) + "ms ago"); + if (_log.shouldLog(Log.INFO)) + _log.info("Rejecting message because it expired " + (now-expiration) + "ms ago"); _context.statManager().addRateData("router.invalidMessageTime", (now-expiration), 0); return "expired " + (now-expiration) + "ms ago"; } else if (now + 4*Router.CLOCK_FUDGE_FACTOR < expiration) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Rejecting message because it will expire too far in the future (" + (expiration-now) + "ms)"); + if (_log.shouldLog(Log.INFO)) + _log.info("Rejecting message because it will expire too far in the future (" + (expiration-now) + "ms)"); _context.statManager().addRateData("router.invalidMessageTime", (now-expiration), 0); return "expire too far in the future (" + (expiration-now) + "ms)"; } @@ -82,7 +82,8 @@ public class MessageValidator { private boolean noteReception(long messageId, long messageExpiration) { long val = messageId; // tweak the high order bits with the message expiration /seconds/ - val ^= (messageExpiration & TIME_MASK) << 16; + ////val ^= (messageExpiration & TIME_MASK) << 16; + val ^= (messageExpiration & TIME_MASK); boolean dup = _filter.add(val); if (dup && _log.shouldLog(Log.WARN)) { _log.warn("Duplicate with " + _filter.getCurrentDuplicateCount() diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index be7205030..80995c51d 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.329 $ $Date: 2006/01/11 15:32:36 $"; + public final static String ID = "$Revision: 1.330 $ $Date: 2006/01/12 05:00:26 $"; public final static String VERSION = "0.6.1.8"; - public final static long BUILD = 13; + public final static long BUILD = 14; public static void main(String args[]) { System.out.println("I2P Router version: " + VERSION + "-" + BUILD); System.out.println("Router ID: " + RouterVersion.ID);