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