Author: toad
Date: 2006-06-20 16:36:54 +0000 (Tue, 20 Jun 2006)
New Revision: 9315
Modified:
trunk/freenet/src/freenet/node/Node.java
trunk/freenet/src/freenet/node/RequestSender.java
Log:
Don't start RequestSender thread in constructor.
Don't do datastore lookup in RequestSender while we may hold another lock.
Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java 2006-06-20 13:50:50 UTC (rev
9314)
+++ trunk/freenet/src/freenet/node/Node.java 2006-06-20 16:36:54 UTC (rev
9315)
@@ -2299,6 +2299,7 @@
sender = new RequestSender(key, null, htl, uid, this,
closestLocation, source);
// RequestSender adds itself to requestSenders
}
+ sender.start();
Logger.minor(this, "Created new sender: "+sender);
return sender;
}
Modified: trunk/freenet/src/freenet/node/RequestSender.java
===================================================================
--- trunk/freenet/src/freenet/node/RequestSender.java 2006-06-20 13:50:50 UTC
(rev 9314)
+++ trunk/freenet/src/freenet/node/RequestSender.java 2006-06-20 16:36:54 UTC
(rev 9315)
@@ -85,19 +85,22 @@
this.node = n;
this.source = source;
this.nearestLoc = nearestLoc;
- if(key instanceof NodeSSK && pubKey == null) {
- pubKey = ((NodeSSK)key).getPubKey();
- if(pubKey == null)
- pubKey = node.getKey(((NodeSSK)key).getPubKeyHash());
- }
-
target = key.toNormalizedDouble();
+ }
+
+ public void start() {
Thread t = new Thread(this, "RequestSender for UID "+uid);
t.setDaemon(true);
t.start();
}
public void run() {
+ if(key instanceof NodeSSK && pubKey == null) {
+ pubKey = ((NodeSSK)key).getPubKey();
+ if(pubKey == null)
+ pubKey = node.getKey(((NodeSSK)key).getPubKeyHash());
+ }
+
short origHTL = htl;
node.addRequestSender(key, htl, this);
HashSet nodesRoutedTo = new HashSet();