Author: zothar
Date: 2006-06-16 12:36:24 +0000 (Fri, 16 Jun 2006)
New Revision: 9226

Modified:
   trunk/freenet/src/freenet/node/Node.java
Log:
One less lock on Node, hopefully without breaking anything.

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2006-06-16 12:20:37 UTC (rev 
9225)
+++ trunk/freenet/src/freenet/node/Node.java    2006-06-16 12:36:24 UTC (rev 
9226)
@@ -2218,7 +2218,7 @@
         * a RequestSender, unless the HTL is 0, in which case NULL.
         * RequestSender.
         */
-       public synchronized Object makeRequestSender(Key key, short htl, long 
uid, PeerNode source, double closestLocation, boolean localOnly, boolean cache, 
boolean ignoreStore) {
+       public Object makeRequestSender(Key key, short htl, long uid, PeerNode 
source, double closestLocation, boolean localOnly, boolean cache, boolean 
ignoreStore) {
                Logger.minor(this, 
"makeRequestSender("+key+","+htl+","+uid+","+source+") on "+portNumber);
                // In store?
                KeyBlock chk = null;
@@ -2267,16 +2267,18 @@
                        return null;
                }

-               // Request coalescing
-               KeyHTLPair kh = new KeyHTLPair(key, htl);
-               sender = (RequestSender) requestSenders.get(kh);
-               if(sender != null) {
-                       Logger.minor(this, "Found sender: "+sender+" for "+uid);
-                       return sender;
+               synchronized(requestSenders) {
+                       // Request coalescing
+                       KeyHTLPair kh = new KeyHTLPair(key, htl);
+                       sender = (RequestSender) requestSenders.get(kh);
+                       if(sender != null) {
+                               Logger.minor(this, "Found sender: "+sender+" 
for "+uid);
+                               return sender;
+                       }
+                       
+                       sender = new RequestSender(key, null, htl, uid, this, 
closestLocation, source);
+                       requestSenders.put(kh, sender);
                }
-               
-               sender = new RequestSender(key, null, htl, uid, this, 
closestLocation, source);
-               requestSenders.put(kh, sender);
                Logger.minor(this, "Created new sender: "+sender);
                return sender;
        }


Reply via email to