Author: toad
Date: 2009-04-09 00:10:10 +0000 (Thu, 09 Apr 2009)
New Revision: 26672
Modified:
trunk/freenet/src/freenet/clients/http/QueueToadlet.java
trunk/freenet/src/freenet/node/fcp/FCPServer.java
Log:
Pass in container, run it inline if possible.
Modified: trunk/freenet/src/freenet/clients/http/QueueToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/QueueToadlet.java 2009-04-09
00:09:28 UTC (rev 26671)
+++ trunk/freenet/src/freenet/clients/http/QueueToadlet.java 2009-04-09
00:10:10 UTC (rev 26672)
@@ -315,7 +315,7 @@
clientPut = new
ClientPut(fcp.getGlobalForeverClient(), insertURI, identifier,
Integer.MAX_VALUE, RequestStarter.BULK_SPLITFILE_PRIORITY_CLASS,
ClientRequest.PERSIST_FOREVER, null, false, !compress, -1,
ClientPutMessage.UPLOAD_FROM_DIRECT, null, file.getContentType(), copiedBucket,
null, fnam, false, fcp, container);
if(clientPut != null)
try {
-
fcp.startBlocking(clientPut);
+
fcp.startBlocking(clientPut, container, context);
} catch
(IdentifierCollisionException e) {
Logger.error(this, "Cannot put same file twice in same millisecond");
writePermanentRedirect(ctx, "Done", "/queue/");
@@ -400,7 +400,7 @@
if(Logger.shouldLog(Logger.MINOR, this)) Logger.minor(this, "Started global
request to insert "+file+" to CHK@ as "+identifier);
if(clientPut != null)
try {
-
fcp.startBlocking(clientPut);
+
fcp.startBlocking(clientPut, container, context);
} catch
(IdentifierCollisionException e) {
Logger.error(this, "Cannot put same file twice in same millisecond");
writePermanentRedirect(ctx, "Done", "/queue/");
@@ -478,7 +478,7 @@
if(logMINOR)
Logger.minor(this, "Started global request to insert dir "+file+" to "+furi+"
as "+identifier);
if(clientPutDir != null)
try {
-
fcp.startBlocking(clientPutDir);
+
fcp.startBlocking(clientPutDir, container, context);
} catch
(IdentifierCollisionException e) {
Logger.error(this, "Cannot put same file twice in same millisecond");
writePermanentRedirect(ctx, "Done", "/queue/");
Modified: trunk/freenet/src/freenet/node/fcp/FCPServer.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPServer.java 2009-04-09 00:09:28 UTC
(rev 26671)
+++ trunk/freenet/src/freenet/node/fcp/FCPServer.java 2009-04-09 00:10:10 UTC
(rev 26672)
@@ -966,7 +966,7 @@
Logger.error(this, "Replacing request completion
callback "+cb, new Exception("error"));
}
- public void startBlocking(final ClientRequest req) throws
IdentifierCollisionException {
+ public void startBlocking(final ClientRequest req, ObjectContainer
container, ClientContext context) throws IdentifierCollisionException {
if(req.persistenceType == ClientRequest.PERSIST_REBOOT) {
req.start(null, core.clientContext);
} else {
@@ -975,6 +975,21 @@
IdentifierCollisionException collided;
}
final OutputWrapper ow = new OutputWrapper();
+ if(container != null) {
+ // Don't activate, it may not be stored yet.
+ try {
+ req.register(container, false, false);
+ req.start(container, context);
+ } catch (IdentifierCollisionException e) {
+ ow.collided = e;
+ } finally {
+ synchronized(ow) {
+ ow.done = true;
+ ow.notifyAll();
+ }
+ }
+ container.deactivate(req, 1);
+ } else {
core.clientContext.jobRunner.queue(new DBJob() {
public void run(ObjectContainer container,
ClientContext context) {
@@ -1011,6 +1026,7 @@
}
}
}
+ }
}
public boolean restartBlocking(final String identifier) {
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs