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())


Reply via email to