Author: toad
Date: 2008-08-02 01:37:43 +0000 (Sat, 02 Aug 2008)
New Revision: 21576
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
Log:
Activate and deactivate the hashset's within the allRequestsByClientRequest
hashmap
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-08-02 01:05:01 UTC (rev 21575)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-08-02 01:37:43 UTC (rev 21576)
@@ -1193,9 +1193,9 @@
public void removeFromAllRequestsByClientRequest(ClientRequester
clientRequest, SendableRequest get, boolean dontComplain) {
if(get.persistent())
- schedCore.removeFromAllRequestsByClientRequest(get,
clientRequest, dontComplain);
+ schedCore.removeFromAllRequestsByClientRequest(get,
clientRequest, dontComplain, selectorContainer);
else
-
schedTransient.removeFromAllRequestsByClientRequest(get, clientRequest,
dontComplain);
+
schedTransient.removeFromAllRequestsByClientRequest(get, clientRequest,
dontComplain, null);
}
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
2008-08-02 01:05:01 UTC (rev 21575)
+++
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
2008-08-02 01:37:43 UTC (rev 21576)
@@ -78,11 +78,15 @@
short prio = req.getPriorityClass(container);
if(logMINOR) Logger.minor(this, "Still registering "+req+" at
prio "+prio+" retry "+retryCount+" for "+req.getClientRequest());
Set v = (Set)
allRequestsByClientRequest.get(req.getClientRequest());
+ if(persistent())
+ container.activate(v, 1);
if(v == null) {
v = makeSetForAllRequestsByClientRequest(container);
allRequestsByClientRequest.put(req.getClientRequest(),
v);
}
v.add(req);
+ if(persistent())
+ container.deactivate(v, 1);
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());
}
@@ -139,7 +143,11 @@
synchronized(lock) {
Set h = (Set) allRequestsByClientRequest.get(request);
if(h == null) return;
+ if(persistent())
+ container.activate(h, 1);
reqs = (SendableRequest[]) h.toArray(new
SendableRequest[h.size()]);
+ if(persistent())
+ container.deactivate(h, 1);
}
for(int i=0;i<reqs.length;i++) {
@@ -168,7 +176,7 @@
recentSuccesses.remove(0);
}
- protected void removeFromAllRequestsByClientRequest(SendableRequest
req, ClientRequester cr, boolean dontComplain) {
+ protected void removeFromAllRequestsByClientRequest(SendableRequest
req, ClientRequester cr, boolean dontComplain, ObjectContainer container) {
if(logMINOR)
Logger.minor(this, "Removing from
allRequestsByClientRequest: "+req+ " for "+cr);
Set v = (Set) allRequestsByClientRequest.get(cr);
@@ -176,9 +184,15 @@
if(!dontComplain)
Logger.error(this, "No HashSet
registered for "+cr+" for "+req);
} else {
+ if(persistent())
+ container.activate(v, 1);
boolean removed = v.remove(req);
if(v.isEmpty())
allRequestsByClientRequest.remove(cr);
+ else {
+ if(persistent())
+ container.deactivate(v, 1);
+ }
if(logMINOR) Logger.minor(this, (removed ? "" :
"Not ") + "Removed "+req+" from HashSet for "+cr+" which now has "+v.size()+"
elements");
}
}
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
2008-08-02 01:05:01 UTC (rev 21575)
+++
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
2008-08-02 01:37:43 UTC (rev 21576)
@@ -503,9 +503,9 @@
ClientRequester cr = req.getClientRequest();
if(req.canRemove(container)) {
if(req.persistent())
-
removeFromAllRequestsByClientRequest(req, cr, false);
+
removeFromAllRequestsByClientRequest(req, cr, false, container);
else
-
schedTransient.removeFromAllRequestsByClientRequest(req, cr, false);
+
schedTransient.removeFromAllRequestsByClientRequest(req, cr, false, null);
// Do not remove from the pendingKeys list.
// Whether it is running a request, waiting to
execute, or waiting on the
// cooldown queue, ULPRs and backdoor
coalescing should still be active.