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);
}
}