Author: toad
Date: 2008-06-26 22:35:18 +0000 (Thu, 26 Jun 2008)
New Revision: 20794
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
Log:
Fix occasional "No HashSet registered" on non-persistent requests caused by
race condition with request selection.
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
2008-06-26 22:29:19 UTC (rev 20793)
+++
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
2008-06-26 22:35:18 UTC (rev 20794)
@@ -241,7 +241,6 @@
int retryCount = req.getRetryCount();
short prio = req.getPriorityClass(container);
if(logMINOR) Logger.minor(this, "Still registering "+req+" at
prio "+prio+" retry "+retryCount+" for "+req.getClientRequest());
- addToGrabArray(prio, retryCount, fixRetryCount(retryCount),
req.getClient(), req.getClientRequest(), req, random, container);
Set v = (Set)
allRequestsByClientRequest.get(req.getClientRequest());
if(v == null) {
v = makeSetForAllRequestsByClientRequest(container);
@@ -252,6 +251,7 @@
v.add(req);
if(persistent())
container.set(v);
+ addToGrabArray(prio, retryCount, fixRetryCount(retryCount),
req.getClient(), req.getClientRequest(), req, random, container);
if(logMINOR) Logger.minor(this, "Registered "+req+" on
prioclass="+prio+", retrycount="+retryCount+" v.size()="+v.size());
}
@@ -332,6 +332,7 @@
}
protected void removeFromAllRequestsByClientRequest(SendableRequest
req, ClientRequester cr) {
+
Set v = (Set) allRequestsByClientRequest.get(cr);
if(v == null) {
Logger.error(this, "No HashSet registered for
"+cr+" for "+req);