Author: toad
Date: 2008-06-21 17:59:12 +0000 (Sat, 21 Jun 2008)
New Revision: 20599

Modified:
   branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
Log:
After registering, if the queue is less than half full, add to it, before 
waking the request starter

Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-06-21 17:56:35 UTC (rev 20598)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-06-21 17:59:12 UTC (rev 20599)
@@ -322,6 +322,7 @@
                                if(anyValid)
                                        schedCore.innerRegister(req, random, 
selectorContainer);
                                selectorContainer.delete(reg);
+                               maybeFillStarterQueue(selectorContainer, 
clientContext);
                                starter.wakeUp();
                        } else {
                                jobRunner.queue(new DBJob() {
@@ -330,6 +331,7 @@
                                                if(anyValid)
                                                        
schedCore.innerRegister(req, random, container);
                                                container.delete(reg);
+                                               
maybeFillStarterQueue(container, context);
                                                starter.wakeUp();
                                        }

@@ -342,6 +344,14 @@
                }
        }

+       private void maybeFillStarterQueue(ObjectContainer container, 
ClientContext context) {
+               synchronized(this) {
+                       if(starterQueue.size() > MAX_STARTER_QUEUE_SIZE / 2)
+                               return;
+               }
+               requestStarterQueueFiller.run(container, context);
+       }
+
        void addPendingKey(final ClientKey key, final SendableGet getter) {
                if(getter.persistent()) {
                        if(!databaseExecutor.onThread()) {


Reply via email to