Author: toad
Date: 2008-06-26 22:26:25 +0000 (Thu, 26 Jun 2008)
New Revision: 20792
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
Log:
Don't repeat the same request if there are no blocks left on it
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-06-26 22:24:11 UTC (rev 20791)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
2008-06-26 22:26:25 UTC (rev 20792)
@@ -548,14 +548,14 @@
jobRunner.queue(new DBJob() {
public void run(ObjectContainer container,
ClientContext context) {
- schedCore.succeeded(succeeded);
+ schedCore.succeeded(succeeded,
container);
if(succeeded.persistent())
container.delete((PersistentChosenRequest)req);
}
}, NativeThread.NORM_PRIORITY, false);
} else
- schedTransient.succeeded(succeeded);
+ schedTransient.succeeded(succeeded, null);
}
public void tripPendingKey(final KeyBlock block) {
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
2008-06-26 22:24:11 UTC (rev 20791)
+++
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
2008-06-26 22:26:25 UTC (rev 20792)
@@ -321,8 +321,9 @@
}
}
- public void succeeded(BaseSendableGet succeeded) {
+ public void succeeded(BaseSendableGet succeeded, ObjectContainer
container) {
if(isInsertScheduler) return;
+ if(succeeded.isEmpty(container)) return;
if(logMINOR)
Logger.minor(this, "Recording successful fetch
from "+succeeded);
recentSuccesses.add(succeeded);
@@ -333,7 +334,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);
+ Logger.error(this, "No HashSet registered for
"+cr+" for "+req);
} else {
boolean removed = v.remove(req);
if(v.isEmpty())