Author: toad
Date: 2008-06-16 16:58:30 +0000 (Mon, 16 Jun 2008)
New Revision: 20372
Modified:
branches/db4o/freenet/src/freenet/node/fcp/FCPConnectionHandler.java
branches/db4o/freenet/src/freenet/node/fcp/RemovePersistentRequest.java
Log:
Run RemovePersistentRequest on the db thread too (if persistent)
Modified: branches/db4o/freenet/src/freenet/node/fcp/FCPConnectionHandler.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/FCPConnectionHandler.java
2008-06-16 16:51:32 UTC (rev 20371)
+++ branches/db4o/freenet/src/freenet/node/fcp/FCPConnectionHandler.java
2008-06-16 16:58:30 UTC (rev 20372)
@@ -534,20 +534,24 @@
return
handler.getForeverClient().getRequest(identifier, container);
}
- ClientRequest removePersistentRequest(boolean global, String
identifier) throws MessageInvalidException {
- ClientRequest req = removePersistentRequest(global, identifier,
true);
- if(req == null)
- req = removePersistentRequest(global, identifier,
false);
+ ClientRequest removePersistentRebootRequest(boolean global, String
identifier) throws MessageInvalidException {
+ FCPClient client =
+ global ? server.globalRebootClient :
+ getRebootClient();
+ ClientRequest req = client.getRequest(identifier, null);
+ if(req != null) {
+ client.removeByIdentifier(identifier, true, server,
null);
+ }
return req;
}
- ClientRequest removePersistentRequest(boolean global, String
identifier, boolean rebootOnly) throws MessageInvalidException {
+ ClientRequest removePersistentForeverRequest(boolean global, String
identifier, ObjectContainer container) throws MessageInvalidException {
FCPClient client =
- global ? (rebootOnly ? server.globalRebootClient
:server.globalForeverClient) :
- (rebootOnly ? getRebootClient() : getForeverClient());
- ClientRequest req = client.getRequest(identifier);
+ global ? server.globalForeverClient :
+ getForeverClient();
+ ClientRequest req = client.getRequest(identifier, container);
if(req != null) {
- client.removeByIdentifier(identifier, true, server);
+ client.removeByIdentifier(identifier, true, server,
container);
}
return req;
}
Modified:
branches/db4o/freenet/src/freenet/node/fcp/RemovePersistentRequest.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/fcp/RemovePersistentRequest.java
2008-06-16 16:51:32 UTC (rev 20371)
+++ branches/db4o/freenet/src/freenet/node/fcp/RemovePersistentRequest.java
2008-06-16 16:58:30 UTC (rev 20372)
@@ -3,8 +3,13 @@
* http://www.gnu.org/ for further details of the GPL. */
package freenet.node.fcp;
+import com.db4o.ObjectContainer;
+
+import freenet.client.async.ClientContext;
+import freenet.client.async.DBJob;
import freenet.node.Node;
import freenet.support.*;
+import freenet.support.io.NativeThread;
/**
* Client telling node to remove a (completed or not) persistent request.
@@ -34,14 +39,28 @@
return NAME;
}
- public void run(FCPConnectionHandler handler, Node node)
+ public void run(final FCPConnectionHandler handler, Node node)
throws MessageInvalidException {
- ClientRequest req = handler.removePersistentRequest(global,
identifier);
+ ClientRequest req =
handler.removePersistentRebootRequest(global, identifier);
if(req == null && !global) {
req = handler.removeRequestByIdentifier(identifier,
true);
}
if(req == null) {
- Logger.error(this, "Huh ? the request is null!");
+ handler.server.core.clientContext.jobRunner.queue(new
DBJob() {
+
+ public void run(ObjectContainer container,
ClientContext context) {
+ try {
+ ClientRequest req =
handler.removePersistentRebootRequest(global, identifier);
+ if(req == null) {
+ Logger.error(this, "Huh ? the
request is null!");
+ }
+ } catch (MessageInvalidException e) {
+ FCPMessage err = new
ProtocolErrorMessage(e.protocolCode, false, e.getMessage(), e.ident, e.global);
+
handler.outputHandler.queue(err);
+ }
+ }
+
+ }, NativeThread.NORM_PRIORITY, false);
}
}