Author: nextgens
Date: 2008-04-03 06:39:58 +0000 (Thu, 03 Apr 2008)
New Revision: 18931

Modified:
   trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
Log:
more sync fixes

Modified: trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-04-03 06:00:55 UTC (rev 18930)
+++ trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-04-03 06:39:58 UTC (rev 18931)
@@ -483,14 +483,16 @@
                                                        
req.getPriorityClass()+", retries "+req.getRetryCount()+", client 
"+req.getClient()+", client-req "+req.getClientRequest()+ ')');
                                        ClientRequester cr = 
req.getClientRequest();
                                        if(req.canRemove()) {
-                                               HashSet v = (HashSet) 
allRequestsByClientRequest.get(cr);
-                                               if(v == null) {
-                                                       Logger.error(this, "No 
HashSet registered for "+cr);
-                                               } else {
-                                                       boolean removed = 
v.remove(req);
-                                                       if(v.isEmpty())
-                                                               
allRequestsByClientRequest.remove(cr);
-                                                       if(logMINOR) 
Logger.minor(this, (removed ? "" : "Not ") + "Removed from HashSet for "+cr+" 
which now has "+v.size()+" elements");
+                                               synchronized(this) {
+                                                       HashSet v = (HashSet) 
allRequestsByClientRequest.get(cr);
+                                                       if(v == null) {
+                                                               
Logger.error(this, "No HashSet registered for "+cr);
+                                                       } else {
+                                                               boolean removed 
= v.remove(req);
+                                                               if(v.isEmpty())
+                                                                       
allRequestsByClientRequest.remove(cr);
+                                                               if(logMINOR) 
Logger.minor(this, (removed ? "" : "Not ") + "Removed from HashSet for "+cr+" 
which now has "+v.size()+" elements");
+                                                       }
                                                }
                                                // Do not remove from the 
pendingKeys list.
                                                // Whether it is running a 
request, waiting to execute, or waiting on the


Reply via email to