Author: toad
Date: 2006-08-03 13:35:58 +0000 (Thu, 03 Aug 2006)
New Revision: 9853
Modified:
trunk/freenet/src/freenet/crypt/Yarrow.java
trunk/freenet/src/freenet/io/comm/MessageFilter.java
trunk/freenet/src/freenet/io/comm/UdpSocketManager.java
trunk/freenet/src/freenet/node/FNPPacketMangler.java
trunk/freenet/src/freenet/node/PacketSender.java
trunk/freenet/src/freenet/node/Version.java
trunk/freenet/src/freenet/node/fcp/FCPServer.java
trunk/freenet/src/freenet/support/UpdatableSortedLinkedList.java
Log:
919:
Only write prng.seed every 1 minute.
Set PacketSender to MAXIMUM_PRIORITY.
Wait at least 20 times the store time after writing the persistent requests to
disk.
UpdatableSortedLinkedList - only check one time in 256.
Logging.
More logging - time some more operations.
Modified: trunk/freenet/src/freenet/crypt/Yarrow.java
===================================================================
--- trunk/freenet/src/freenet/crypt/Yarrow.java 2006-08-03 13:29:04 UTC (rev
9852)
+++ trunk/freenet/src/freenet/crypt/Yarrow.java 2006-08-03 13:35:58 UTC (rev
9853)
@@ -226,7 +226,17 @@
fast_pool_reseed();
}
+ private long timeLastWroteSeed = -1;
+
private void write_seed(File filename) {
+ synchronized(this) {
+ long now = System.currentTimeMillis();
+ if(now - timeLastWroteSeed <= 60*1000) {
+ return;
+ } else
+ timeLastWroteSeed = now;
+ }
+
try {
DataOutputStream dos =
new DataOutputStream(new
BufferedOutputStream(new FileOutputStream(filename)));
@@ -235,6 +245,7 @@
dos.close();
} catch (Exception e) {
}
+
}
/**
@@ -462,7 +473,9 @@
if (performedPoolReseed && (seedfile != null)) {
//Dont do this while synchronized on 'this' since
//opening a file seems to be suprisingly slow on windows
+ Logger.minor(this, "Writing seedfile");
write_seed(seedfile);
+ Logger.minor(this, "Written seedfile");
}
return actualEntropy;
Modified: trunk/freenet/src/freenet/io/comm/MessageFilter.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/MessageFilter.java 2006-08-03
13:29:04 UTC (rev 9852)
+++ trunk/freenet/src/freenet/io/comm/MessageFilter.java 2006-08-03
13:35:58 UTC (rev 9853)
@@ -166,7 +166,7 @@
}
public void setMessage(Message message) {
- Logger.debug(this, "setMessage("+message+") on "+this, new
Exception("debug"));
+ //Logger.debug(this, "setMessage("+message+") on "+this, new
Exception("debug"));
_message = message;
}
Modified: trunk/freenet/src/freenet/io/comm/UdpSocketManager.java
===================================================================
--- trunk/freenet/src/freenet/io/comm/UdpSocketManager.java 2006-08-03
13:29:04 UTC (rev 9852)
+++ trunk/freenet/src/freenet/io/comm/UdpSocketManager.java 2006-08-03
13:35:58 UTC (rev 9853)
@@ -191,14 +191,30 @@
removeTimedOutFilters();
// Check for matched _filters
if (packet != null) {
+ long startTime = System.currentTimeMillis();
Peer peer = new Peer(packet.getAddress(),
packet.getPort());
+ long endTime = System.currentTimeMillis();
+ if(endTime - startTime > 50) {
+ if(endTime-startTime > 500)
+ Logger.error(this, "packet creation
took "+(endTime-startTime)+"ms");
+ else
+ Logger.normal(this, "packet creation
took "+(endTime-startTime)+"ms");
+ }
byte[] data = packet.getData();
int offset = packet.getOffset();
int length = packet.getLength();
if (lowLevelFilter != null) {
try {
Logger.minor(this, "Processing packet
of length "+length+" from "+peer);
+ startTime = System.currentTimeMillis();
lowLevelFilter.process(data, offset,
length, peer);
+ endTime = System.currentTimeMillis();
+ if(endTime - startTime > 50) {
+ if(endTime-startTime > 500)
+ Logger.error(this,
"processing packet took "+(endTime-startTime)+"ms");
+ else
+ Logger.normal(this,
"processing packet took "+(endTime-startTime)+"ms");
+ }
Logger.minor(this,
"Successfully handled
packet length " + length);
} catch (Throwable t) {
@@ -209,8 +225,9 @@
// Create a bogus context since no filter
Message m = decodePacket(data, offset, length,
new DummyPeerContext(peer), 0);
- if (m != null)
+ if (m != null) {
checkFilters(m);
+ }
}
} else
Logger.minor(this, "Null packet");
@@ -262,6 +279,7 @@
}
private void removeTimedOutFilters() {
+ long tStart = System.currentTimeMillis();
synchronized (_filters) {
for (ListIterator i = _filters.listIterator();
i.hasNext();) {
MessageFilter f = (MessageFilter) i.next();
@@ -278,6 +296,13 @@
}
}
}
+ long tEnd = System.currentTimeMillis();
+ if(tEnd - tStart > 50) {
+ if(tEnd - tStart > 500)
+ Logger.error(this, "removeTimedOutFilters took
"+(tEnd-tStart)+"ms");
+ else
+ Logger.normal(this, "removeTimedOutFilters took
"+(tEnd-tStart)+"ms");
+ }
}
/**
Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java
===================================================================
--- trunk/freenet/src/freenet/node/FNPPacketMangler.java 2006-08-03
13:29:04 UTC (rev 9852)
+++ trunk/freenet/src/freenet/node/FNPPacketMangler.java 2006-08-03
13:35:58 UTC (rev 9853)
@@ -627,7 +627,9 @@
for(int i=0;i<md.getDigestLength();i++) {
packetHash[i] ^= buf[offset+i];
}
+ Logger.minor(this, "Contributing entropy");
node.random.acceptEntropyBytes(myPacketDataSource, packetHash, 0,
md.getDigestLength(), 0.5);
+ Logger.minor(this, "Contributed entropy");
// Lots more to do yet!
processDecryptedData(plaintext, seqNumber, tracker, length -
plaintext.length);
Modified: trunk/freenet/src/freenet/node/PacketSender.java
===================================================================
--- trunk/freenet/src/freenet/node/PacketSender.java 2006-08-03 13:29:04 UTC
(rev 9852)
+++ trunk/freenet/src/freenet/node/PacketSender.java 2006-08-03 13:35:58 UTC
(rev 9853)
@@ -38,6 +38,7 @@
this.node = node;
myThread = new Thread(this, "PacketSender thread for
"+node.portNumber);
myThread.setDaemon(true);
+ myThread.setPriority(Thread.MAX_PRIORITY);
}
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-08-03 13:29:04 UTC (rev
9852)
+++ trunk/freenet/src/freenet/node/Version.java 2006-08-03 13:35:58 UTC (rev
9853)
@@ -18,7 +18,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- private static final int buildNumber = 918;
+ private static final int buildNumber = 919;
/** Oldest build of Fred we will talk to */
private static final int oldLastGoodBuild = 870;
Modified: trunk/freenet/src/freenet/node/fcp/FCPServer.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPServer.java 2006-08-03 13:29:04 UTC
(rev 9852)
+++ trunk/freenet/src/freenet/node/fcp/FCPServer.java 2006-08-03 13:35:58 UTC
(rev 9853)
@@ -436,18 +436,21 @@
public void run() {
while(true) {
+ long startTime = System.currentTimeMillis();
try {
storePersistentRequests();
} catch (Throwable t) {
Logger.error(this, "Caught "+t, t);
}
+ long delta = System.currentTimeMillis() -
startTime;
synchronized(this) {
+ long delay =
Math.max(persistenceInterval, delta * 20);
if(killed) return;
- long startTime =
System.currentTimeMillis();
+ startTime = System.currentTimeMillis();
long now;
- while(((now =
System.currentTimeMillis()) < startTime + persistenceInterval) && !storeNow) {
+ while(((now =
System.currentTimeMillis()) < startTime + delay) && !storeNow) {
try {
- long wait =
Math.max((startTime + persistenceInterval) - now, Integer.MAX_VALUE);
+ long wait =
Math.max((startTime + delay) - now, Integer.MAX_VALUE);
if(wait > 0)
wait(Math.min(wait, 5000));
} catch (InterruptedException
e) {
Modified: trunk/freenet/src/freenet/support/UpdatableSortedLinkedList.java
===================================================================
--- trunk/freenet/src/freenet/support/UpdatableSortedLinkedList.java
2006-08-03 13:29:04 UTC (rev 9852)
+++ trunk/freenet/src/freenet/support/UpdatableSortedLinkedList.java
2006-08-03 13:35:58 UTC (rev 9853)
@@ -54,8 +54,12 @@
throw new IllegalStateException("impossible");
}
+ private int ctr;
+
protected synchronized void checkList() {
- // FIXME once satisfied that this works, make it only happen
occasionally
+ // If get errors, make this happen all the time.
+ ctr++;
+ if(ctr % 256 != 0) return;
int statedLength = list.size();
int realLength = 0;
for(Enumeration e = list.elements();e.hasMoreElements();) {
@@ -70,7 +74,7 @@
Logger.error(this, "Illegal ERROR: "+err, new
Exception("error"));
throw new IllegalStateException(err);
} else {
- Logger.minor(this, "checkList() successful: realLength =
statedLength = "+realLength+" on "+this);
+ //Logger.minor(this, "checkList() successful: realLength =
statedLength = "+realLength+" on "+this);
}
}