Author: toad
Date: 2008-05-31 14:55:27 +0000 (Sat, 31 May 2008)
New Revision: 20162

Modified:
   branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
Log:
databaseExecutor jobs should commit

Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-05-31 14:42:05 UTC (rev 20161)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-05-31 14:55:27 UTC (rev 20162)
@@ -293,15 +293,17 @@
                public void run() {
                        ChosenRequest req = null;
                        while(true) {
+                               req = removeFirst();
+                               boolean finished = false;
                                synchronized(starterQueue) {
                                        if(req != null) {
                                                starterQueue.add(req);
                                                req = null;
                                        }
-                                       if(starterQueue.size() >= 
MAX_STARTER_QUEUE_SIZE) return;
+                                       if(starterQueue.size() >= 
MAX_STARTER_QUEUE_SIZE) finished = true;
                                }
-                               req = removeFirst();
-                               if(req == null) return;
+                               selectorContainer.commit();
+                               if(req == null || finished) return;
                        }
                }
        };
@@ -322,6 +324,7 @@
                                                
schedCore.removePendingKey(getter, complain, key);
                                                if(persistentCooldownQueue != 
null)
                                                        
persistentCooldownQueue.removeKey(key, getter, 
getter.getCooldownWakeupByKey(key), selectorContainer);
+                                               selectorContainer.commit();
                                        } catch (Throwable t) {
                                                Logger.error(this, "Caught "+t, 
t);
                                        }
@@ -358,6 +361,7 @@
                                public void run() {
                                        try {
                                                
schedCore.reregisterAll(request, random, ClientRequestScheduler.this);
+                                               selectorContainer.commit();
                                                starter.wakeUp();
                                        } catch (Throwable t) {
                                                Logger.error(this, "Caught "+t, 
t);
@@ -380,6 +384,7 @@
                                public void run() {
                                        try {
                                                schedCore.succeeded(succeeded);
+                                               selectorContainer.commit();
                                        } catch (Throwable t) {
                                                Logger.error(this, "Caught "+t, 
t);
                                        }
@@ -442,6 +447,7 @@
                                        }
                                }
                                if(logMINOR) Logger.minor(this, "Finished 
running callbacks");
+                               selectorContainer.commit();
                        }

                }, "tripPendingKey for "+block.getKey());
@@ -471,6 +477,7 @@
                                if(priority >= oldPrio) return; // already on 
list at >= priority
                                offeredKeys[priority].queueKey(key);
                                starter.wakeUp();
+                               // No need to commit
                        }
                }, "maybeQueueOfferedKey");
        }
@@ -498,6 +505,7 @@
                                try {
                                        
if(moveKeysFromCooldownQueue(persistentCooldownQueue, selectorContainer))
                                                starter.wakeUp();
+                                       selectorContainer.commit();
                                } catch (Throwable t) {
                                        Logger.error(this, "Caught "+t, t);
                                }


Reply via email to