Author: toad
Date: 2008-08-15 16:38:11 +0000 (Fri, 15 Aug 2008)
New Revision: 21910

Modified:
   branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
Log:
Don't add to the starterQueue if we're only going to take it back off it.


Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-08-15 15:30:10 UTC (rev 21909)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-08-15 16:38:11 UTC (rev 21910)
@@ -718,13 +718,19 @@
                int retryCount = req.getRetryCount();
                synchronized(starterQueue) {
                        boolean allBetter = true;
+                       boolean betterThanSome = false;
+                       int size = 0;
                        for(PersistentChosenRequest old : starterQueue) {
+                               size += old.sizeNotStarted();
                                if(old.prio < prio)
                                        allBetter = false;
                                else if(old.prio == prio && old.retryCount <= 
retryCount)
                                        allBetter = false;
+                               if(old.prio > prio || old.prio == prio && 
old.prio > retryCount)
+                                       betterThanSome = true;
                        }
                        if(allBetter && !starterQueue.isEmpty()) return;
+                       if(size >= MAX_STARTER_QUEUE_SIZE && !betterThanSome) 
return;
                }
                addToStarterQueue(req, container);
                trimStarterQueue(container);


Reply via email to