r26672 - in trunk/freenet/src/freenet: clients/http node/fcp

[email protected]
Newsgroups gmane.network.freenet.cvs
Message-ID <[email protected]>
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) {
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.