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();
+ }
+
}