Author: toad
Date: 2008-06-20 20:56:54 +0000 (Fri, 20 Jun 2008)
New Revision: 20537

Modified:
   
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
   
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
   
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerNonPersistent.java
Log:
Maybe fix "No HashSet registered for <requestor>"

Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java  
    2008-06-20 20:49:27 UTC (rev 20536)
+++ 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java  
    2008-06-20 20:56:54 UTC (rev 20537)
@@ -6,6 +6,7 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;

 import com.db4o.ObjectContainer;

@@ -237,15 +238,17 @@
                if(logMINOR) Logger.minor(this, "Still registering "+req+" at 
prio "+req.getPriorityClass()+" retry "+req.getRetryCount()+" for 
"+req.getClientRequest());
                int retryCount = req.getRetryCount();
                addToGrabArray(req.getPriorityClass(), retryCount, 
fixRetryCount(retryCount), req.getClient(), req.getClientRequest(), req, 
random, container);
-               HashSet v = (HashSet) 
allRequestsByClientRequest.get(req.getClientRequest());
+               Set v = (Set) 
allRequestsByClientRequest.get(req.getClientRequest());
                if(v == null) {
-                       v = new HashSet();
+                       v = makeSetForAllRequestsByClientRequest();
                        allRequestsByClientRequest.put(req.getClientRequest(), 
v);
                }
                v.add(req);
                if(logMINOR) Logger.minor(this, "Registered "+req+" on 
prioclass="+req.getPriorityClass()+", retrycount="+req.getRetryCount()+" 
v.size()="+v.size());
        }

+       protected abstract Set makeSetForAllRequestsByClientRequest();
+
        void addToGrabArray(short priorityClass, int retryCount, int rc, Object 
client, ClientRequester cr, SendableRequest req, RandomSource random, 
ObjectContainer container) {
                if((priorityClass > RequestStarter.MINIMUM_PRIORITY_CLASS) || 
(priorityClass < RequestStarter.MAXIMUM_PRIORITY_CLASS))
                        throw new IllegalStateException("Invalid priority: 
"+priorityClass+" - range is "+RequestStarter.MAXIMUM_PRIORITY_CLASS+" (most 
important) to "+RequestStarter.MINIMUM_PRIORITY_CLASS+" (least important)");
@@ -294,7 +297,7 @@
        public void reregisterAll(ClientRequester request, RandomSource random, 
ClientRequestScheduler lock, ObjectContainer container) {
                SendableRequest[] reqs;
                synchronized(lock) {
-                       HashSet h = (HashSet) 
allRequestsByClientRequest.get(request);
+                       Set h = (Set) allRequestsByClientRequest.get(request);
                        if(h == null) return;
                        reqs = (SendableRequest[]) h.toArray(new 
SendableRequest[h.size()]);
                }
@@ -318,7 +321,7 @@
        }

        protected void removeFromAllRequestsByClientRequest(SendableRequest 
req, ClientRequester cr) {
-                       HashSet v = (HashSet) 
allRequestsByClientRequest.get(cr);
+                       Set v = (Set) allRequestsByClientRequest.get(cr);
                        if(v == null) {
                                Logger.error(this, "No HashSet registered for 
"+cr);
                        } else {

Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java  
    2008-06-20 20:49:27 UTC (rev 20536)
+++ 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java  
    2008-06-20 20:56:54 UTC (rev 20537)
@@ -6,6 +6,7 @@
 import java.util.Comparator;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Set;

 import com.db4o.ObjectContainer;
 import com.db4o.ObjectSet;
@@ -22,6 +23,7 @@
 import freenet.node.RequestStarter;
 import freenet.node.SendableGet;
 import freenet.node.SendableRequest;
+import freenet.support.Db4oSet;
 import freenet.support.Logger;
 import freenet.support.PrioritizedSerialExecutor;
 import freenet.support.RandomGrabArray;
@@ -513,6 +515,10 @@
                }, NativeThread.NORM_PRIORITY, "Remove fetching key");
        }

+       protected Set makeSetForAllRequestsByClientRequest() {
+               return new Db4oSet(container, 1);
+       }
+
 }

 class RegisterMe {

Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerNonPersistent.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerNonPersistent.java
     2008-06-20 20:49:27 UTC (rev 20536)
+++ 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerNonPersistent.java
     2008-06-20 20:56:54 UTC (rev 20537)
@@ -4,7 +4,9 @@
 package freenet.client.async;

 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.LinkedList;
+import java.util.Set;

 import com.db4o.ObjectContainer;

@@ -37,4 +39,8 @@
                return null;
        }

+       protected Set makeSetForAllRequestsByClientRequest() {
+               return new HashSet();
+       }
+
 }


Reply via email to