Author: toad
Date: 2008-08-13 23:31:21 +0000 (Wed, 13 Aug 2008)
New Revision: 21829

Modified:
   branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
Log:
Fix isQueueAlmostEmpty().
Don't register if don't need to, even on transient requests.
Logging.


Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-08-13 23:30:21 UTC (rev 21828)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-08-13 23:31:21 UTC (rev 21829)
@@ -485,6 +485,7 @@
                                }, NativeThread.NORM_PRIORITY+1, false);
                        }
                } else {
+                       if(!anyValid) return;
                        // Register immediately.
                        for(int i=0;i<getters.length;i++)
                                schedTransient.innerRegister(getters[i], 
random, null);
@@ -594,6 +595,8 @@
                                        for(int i=0;i<starterQueue.size();i++) {
                                                if(starterQueue.get(i) == 
reqGroup) {
                                                        starterQueue.remove(i);
+                                                       if(logMINOR)
+                                                               
Logger.minor(this, "Removed "+reqGroup+" from starter queue because is empty");
                                                        i--;
                                                } else {
                                                        finalLength += 
starterQueue.get(i).sizeNotStarted();
@@ -605,7 +608,7 @@
                        if(finalLength < MAX_STARTER_QUEUE_SIZE)
                                queueFillRequestStarterQueue();
                        if(logMINOR)
-                               Logger.minor(this, "grabRequest() returning 
"+block);
+                               Logger.minor(this, "grabRequest() returning 
"+block+" for "+reqGroup);
                        return block;
                }
        }
@@ -631,8 +634,12 @@
         * @return True if the queue is now full/over-full.
         */
        boolean addToStarterQueue(SendableRequest request, ObjectContainer 
container) {
+               if(logMINOR)
+                       Logger.minor(this, "Adding to starter queue: "+request);
                container.activate(request, 1);
                PersistentChosenRequest chosen = new 
PersistentChosenRequest(request, request.getPriorityClass(container), 
request.getRetryCount(), container, ClientRequestScheduler.this, clientContext);
+               if(logMINOR)
+                       Logger.minor(this, "Created PCR: "+chosen);
                container.deactivate(request, 1);
                synchronized(starterQueue) {
                        // Since we pass in runningPersistentRequests, we don't 
need to check whether it is already in the starterQueue.
@@ -1125,9 +1132,7 @@
        }

        public boolean isQueueAlmostEmpty() {
-               synchronized(starterQueue) {
-                       return this.starterQueue.size() < 
MAX_STARTER_QUEUE_SIZE / 4;
-               }
+               return starterQueueSize() < MAX_STARTER_QUEUE_SIZE / 4;
        }

        public boolean isInsertScheduler() {


Reply via email to