Author: toad
Date: 2006-08-24 15:31:18 +0000 (Thu, 24 Aug 2006)
New Revision: 10260
Modified:
trunk/freenet/src/freenet/node/FNPPacketMangler.java
trunk/freenet/src/freenet/node/PeerNode.java
Log:
Try to track down the 100% cpu / constant Key changed(2)'s bug.
Modified: trunk/freenet/src/freenet/node/FNPPacketMangler.java
===================================================================
--- trunk/freenet/src/freenet/node/FNPPacketMangler.java 2006-08-24
14:57:48 UTC (rev 10259)
+++ trunk/freenet/src/freenet/node/FNPPacketMangler.java 2006-08-24
15:31:18 UTC (rev 10260)
@@ -1091,11 +1091,13 @@
* @throws PacketSequenceException
*/
void processOutgoingPreformatted(byte[] buf, int offset, int length,
PeerNode peer, boolean neverWaitForPacketNumber, AsyncMessageCallback[]
callbacks, int alreadyReportedBytes) throws NotConnectedException,
WouldBlockException, PacketSequenceException {
+ KeyTracker last = null;
while(true) {
try {
if(!peer.isConnected())
throw new NotConnectedException();
KeyTracker tracker = peer.getCurrentKeyTracker();
+ last = tracker;
if(tracker == null) {
Logger.normal(this, "Dropping packet: Not connected to
"+peer.getPeer()+" yet(2)");
throw new NotConnectedException();
@@ -1106,6 +1108,11 @@
return;
} catch (KeyChangedException e) {
Logger.normal(this, "Key changed(2) for "+peer.getPeer());
+ if(last == peer.getCurrentKeyTracker()) {
+ if(peer.isConnected()) {
+ Logger.error(this, "Peer is connected, yet
current tracker is deprecated !!: "+e, e);
+ }
+ }
// Go around again
}
}
Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java 2006-08-24 14:57:48 UTC
(rev 10259)
+++ trunk/freenet/src/freenet/node/PeerNode.java 2006-08-24 15:31:18 UTC
(rev 10260)
@@ -1351,7 +1351,8 @@
synchronized(this) {
oldPrev = previousTracker;
oldCur = currentTracker;
- previousTracker = currentTracker = null;
+ previousTracker = null;
+ currentTracker = null;
}
if(oldPrev != null) {
oldPrev.completelyDeprecated(newTracker);