Author: toad
Date: 2008-07-30 12:41:23 +0000 (Wed, 30 Jul 2008)
New Revision: 21500

Modified:
   
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
Log:
If NORM_PRIORITY queue is full, and the request starter queue isn't, then don't 
run RegisterMe, reschedule it at NORM-1.

Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java  
    2008-07-29 23:16:32 UTC (rev 21499)
+++ 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java  
    2008-07-30 12:41:23 UTC (rev 21500)
@@ -578,6 +578,13 @@
        class RegisterMeRunner implements DBJob {

                public void run(ObjectContainer container, ClientContext 
context) {
+                       
if(sched.databaseExecutor.getQueueSize(NativeThread.NORM_PRIORITY) > 100) {
+                               // If the queue isn't empty, reschedule at 
NORM-1
+                               if(!sched.isQueueAlmostEmpty()) {
+                                       
context.jobRunner.queue(registerMeRunner, NativeThread.NORM_PRIORITY-1, false);
+                                       return;
+                               }
+                       }
                        long deadline = System.currentTimeMillis() + 10*1000;
                        if(registerMeSet == null) {
                                Logger.error(this, "registerMeSet is null for 
"+ClientRequestSchedulerCore.this+" ( "+this+" )");


Reply via email to