Author: toad
Date: 2008-06-19 16:20:51 +0000 (Thu, 19 Jun 2008)
New Revision: 20496

Modified:
   branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
Log:
Call finishRegister() even if everything was in the datastore. Just don't call 
innerRegister if we don't need to.
- We were forgetting to delete the RegisterMe in this case.

Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-06-19 16:19:33 UTC (rev 20495)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-06-19 16:20:51 UTC (rev 20496)
@@ -217,7 +217,7 @@
                                }, getter.getPriorityClass(), "Checking 
datastore");
                        }
                } else {
-                       finishRegister(req, persistent, onDatabaseThread);
+                       finishRegister(req, persistent, onDatabaseThread, true);
                }
        }

@@ -295,28 +295,25 @@
                                anyValid = true;
                        }
                }
-               if(!anyValid) {
-                       if(logMINOR)
-                               Logger.minor(this, "No valid keys, returning 
without registering for "+getter);
-                       return;
-               }
-               finishRegister(getter, persistent, false);
+               finishRegister(getter, persistent, false, anyValid);
        }

-       private void finishRegister(final SendableRequest req, boolean 
persistent, boolean onDatabaseThread) {
+       private void finishRegister(final SendableRequest req, boolean 
persistent, boolean onDatabaseThread, final boolean anyValid) {
                if(persistent) {
                        // Add to the persistent registration queue
                        if(onDatabaseThread) {
                                if(!databaseExecutor.onThread()) {
                                        throw new IllegalStateException("Not on 
database thread!");
                                }
-                               schedCore.innerRegister(req, random);
+                               if(anyValid)
+                                       schedCore.innerRegister(req, random);
                                schedCore.deleteRegisterMe(req);
                                starter.wakeUp();
                        } else {
                                databaseExecutor.execute(new Runnable() {
                                        public void run() {
-                                               schedCore.innerRegister(req, 
random);
+                                               if(anyValid)
+                                                       
schedCore.innerRegister(req, random);
                                                schedCore.deleteRegisterMe(req);
                                                selectorContainer.commit();
                                        }


Reply via email to