Author: toad
Date: 2008-06-17 17:27:20 +0000 (Tue, 17 Jun 2008)
New Revision: 20406

Modified:
   branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
   branches/db4o/freenet/src/freenet/client/async/ClientRequester.java
   branches/db4o/freenet/src/freenet/node/fcp/ClientRequest.java
   branches/db4o/freenet/src/freenet/node/fcp/ModifyPersistentRequest.java
Log:
Don't send the modified-a-request messages until after we have committed.

Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-06-17 17:21:25 UTC (rev 20405)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-06-17 17:27:20 UTC (rev 20406)
@@ -457,23 +457,9 @@
                }
        }

-       public void reregisterAll(final ClientRequester request) {
-               if(request.persistent()) {
-                       databaseExecutor.execute(new Runnable() {
-                               public void run() {
-                                       try {
-                                               
schedCore.reregisterAll(request, random, ClientRequestScheduler.this);
-                                               selectorContainer.commit();
-                                               starter.wakeUp();
-                                       } catch (Throwable t) {
-                                               Logger.error(this, "Caught "+t, 
t);
-                                       }
-                               }
-                       }, "Reregister for "+request);
-               } else {
-                       schedTransient.reregisterAll(request, random, this);
-                       starter.wakeUp();
-               }
+       public void reregisterAll(final ClientRequester request, 
ObjectContainer container) {
+               schedTransient.reregisterAll(request, random, this);
+               starter.wakeUp();
        }

        public String getChoosenPriorityScheduler() {

Modified: branches/db4o/freenet/src/freenet/client/async/ClientRequester.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequester.java 
2008-06-17 17:21:25 UTC (rev 20405)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequester.java 
2008-06-17 17:27:20 UTC (rev 20406)
@@ -123,12 +123,12 @@
                return client;
        }

-       public void setPriorityClass(short newPriorityClass, ClientContext ctx) 
{
+       public void setPriorityClass(short newPriorityClass, ClientContext ctx, 
ObjectContainer container) {
                this.priorityClass = newPriorityClass;
-               ctx.chkFetchScheduler.reregisterAll(this);
-               ctx.chkInsertScheduler.reregisterAll(this);
-               ctx.sskFetchScheduler.reregisterAll(this);
-               ctx.sskInsertScheduler.reregisterAll(this);
+               ctx.chkFetchScheduler.reregisterAll(this, container);
+               ctx.chkInsertScheduler.reregisterAll(this, container);
+               ctx.sskFetchScheduler.reregisterAll(this, container);
+               ctx.sskInsertScheduler.reregisterAll(this, container);
        }

        public boolean persistent() {

Modified: branches/db4o/freenet/src/freenet/node/fcp/ClientRequest.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ClientRequest.java       
2008-06-17 17:21:25 UTC (rev 20405)
+++ branches/db4o/freenet/src/freenet/node/fcp/ClientRequest.java       
2008-06-17 17:27:20 UTC (rev 20406)
@@ -307,8 +307,9 @@
        /**
         * Called after a ModifyPersistentRequest.
         * Sends a PersistentRequestModified message to clients if any value 
changed. 
+        * Commits before sending the messages.
         */
-       public void modifyRequest(String newClientToken, short 
newPriorityClass, FCPServer server) {
+       public void modifyRequest(String newClientToken, short 
newPriorityClass, FCPServer server, ObjectContainer container) {

                boolean clientTokenChanged = false;
                boolean priorityClassChanged = false;
@@ -327,19 +328,15 @@

                if(newPriorityClass >= 0 && newPriorityClass != priorityClass) {
                        this.priorityClass = newPriorityClass;
-                       getClientRequest().setPriorityClass(priorityClass);
+                       getClientRequest().setPriorityClass(priorityClass, 
server.core.clientContext, container);
                        priorityClassChanged = true;
                }

-               if( clientTokenChanged || priorityClassChanged ) {
-                       if(persistenceType != ClientRequest.PERSIST_CONNECTION) 
{
-                               if(client != null) {
-                                       server.forceStorePersistentRequests();
-                               }
-                       }
-               } else {
+               if(! ( clientTokenChanged || priorityClassChanged ) ) {
                        return; // quick return, nothing was changed
                }
+               
+               container.commit();

                // this could become too complex with more parameters, but for 
now its ok
                final PersistentRequestModifiedMessage modifiedMsg;

Modified: 
branches/db4o/freenet/src/freenet/node/fcp/ModifyPersistentRequest.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/ModifyPersistentRequest.java     
2008-06-17 17:21:25 UTC (rev 20405)
+++ branches/db4o/freenet/src/freenet/node/fcp/ModifyPersistentRequest.java     
2008-06-17 17:27:20 UTC (rev 20406)
@@ -84,13 +84,13 @@
                                                
handler.outputHandler.queue(msg);
                                                return;
                                        } else {
-                                               req.modifyRequest(clientToken, 
priorityClass, handler.server);
+                                               req.modifyRequest(clientToken, 
priorityClass, handler.server, container);
                                        }
                                }

                        }, NativeThread.NORM_PRIORITY, false);
                } else {
-                       req.modifyRequest(clientToken, priorityClass, 
node.clientCore.getFCPServer());
+                       req.modifyRequest(clientToken, priorityClass, 
node.clientCore.getFCPServer(), null);
                }
        }



Reply via email to