r26623 - in trunk/freenet/src/freenet/node: . fcp

[email protected]
Newsgroups gmane.network.freenet.cvs
Message-ID <[email protected]>
Author: toad
Date: 2009-04-07 22:48:52 +0000 (Tue, 07 Apr 2009)
New Revision: 26623

Modified:
   trunk/freenet/src/freenet/node/NodeClientCore.java
   trunk/freenet/src/freenet/node/fcp/ClientRequest.java
   trunk/freenet/src/freenet/node/fcp/FCPClient.java
   trunk/freenet/src/freenet/node/fcp/FCPServer.java
Log:
Remove toStart, register immediately and create a DBJob to call start() on inserts (start immediately on requests), schedule that job for restart and immediately and have it remove itself after running.
Fixes migration from non-db4o of non-global requests when lazy init is enabled, which option is now removed.


Modified: trunk/freenet/src/freenet/node/NodeClientCore.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeClientCore.java	2009-04-07 22:11:23 UTC (rev 26622)
+++ trunk/freenet/src/freenet/node/NodeClientCore.java	2009-04-07 22:48:52 UTC (rev 26623)
@@ -125,7 +125,6 @@
 	public final BackgroundBlockEncoder backgroundBlockEncoder;
 	public final RealCompressor compressor;
 	/** If true, requests are resumed lazily i.e. startup does not block waiting for them. */
-	private boolean lazyResume;
 	protected final Persister persister;
 	/** All client-layer database access occurs on a SerialExecutor, so that we don't need
 	 * to have multiple parallel transactions. Advantages:
@@ -433,24 +432,6 @@
 		System.out.println("Initializing USK Manager");
 		uskManager.init(container, clientContext);
 
-		nodeConfig.register("lazyResume", false, sortOrder++, true, false, "NodeClientCore.lazyResume",
-			"NodeClientCore.lazyResumeLong", new BooleanCallback() {
-
-			@Override
-			public Boolean get() {
-				return lazyResume;
-			}
-
-			@Override
-			public void set(Boolean val) throws InvalidConfigValueException {
-				synchronized(NodeClientCore.this) {
-					lazyResume = val;
-				}
-			}
-		});
-
-		lazyResume = nodeConfig.getBoolean("lazyResume");
-
 		nodeConfig.register("maxBackgroundUSKFetchers", "64", sortOrder++, true, false, "NodeClientCore.maxUSKFetchers",
 			"NodeClientCore.maxUSKFetchersLong", new IntCallback() {
 
@@ -1267,10 +1248,6 @@
 		return maxBackgroundUSKFetchers;
 	}
 
-	public boolean lazyResume() {
-		return lazyResume;
-	}
-
 	public boolean allowDownloadTo(File filename) {
 		if(downloadAllowedEverywhere)
 			return true;

Modified: trunk/freenet/src/freenet/node/fcp/ClientRequest.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientRequest.java	2009-04-07 22:11:23 UTC (rev 26622)
+++ trunk/freenet/src/freenet/node/fcp/ClientRequest.java	2009-04-07 22:48:52 UTC (rev 26623)
@@ -245,21 +245,38 @@
 			Logger.minor(ClientRequest.class, rt.maxMemory()-rt.freeMemory()+" in use loading request "+clientName+" "+fs.get("Identifier"));
 		try {
 			String type = fs.get("Type");
-			boolean lazyResume = server.core.lazyResume();
 			if(type.equals("GET")) {
 				ClientGet cg = new ClientGet(fs, client, server);
-				cg.register(container, lazyResume, true);
-				if(!lazyResume) cg.start(container, context);
+				cg.register(container, false, true);
+				cg.start(container, context);
 				return cg;
 			} else if(type.equals("PUT")) {
-				ClientPut cp = new ClientPut(fs, client, server, container);
-				client.register(cp, lazyResume, container);
-				if(!lazyResume) cp.start(container, context);
+				final ClientPut cp = new ClientPut(fs, client, server, container);
+				client.register(cp, false, container);
+				DBJob start = new DBJob() {
+
+					public void run(ObjectContainer container, ClientContext context) {
+						cp.start(container, context);
+						context.jobRunner.removeRestartJob(this, NativeThread.HIGH_PRIORITY, container);
+					}
+					
+				};
+				context.jobRunner.queueRestartJob(start, NativeThread.HIGH_PRIORITY, container, false);
+				context.jobRunner.queue(start, NativeThread.HIGH_PRIORITY, false);
 				return cp;
 			} else if(type.equals("PUTDIR")) {
-				ClientPutDir cp = new ClientPutDir(fs, client, server, container);
-				client.register(cp, lazyResume, container);
-				if(!lazyResume) cp.start(container, context);
+				final ClientPutDir cp = new ClientPutDir(fs, client, server, container);
+				client.register(cp, false, container);
+				DBJob start = new DBJob() {
+
+					public void run(ObjectContainer container, ClientContext context) {
+						cp.start(container, context);
+						context.jobRunner.removeRestartJob(this, NativeThread.HIGH_PRIORITY, container);
+					}
+					
+				};
+				context.jobRunner.queueRestartJob(start, NativeThread.HIGH_PRIORITY, container, false);
+				context.jobRunner.queue(start, NativeThread.HIGH_PRIORITY, false);
 				return cp;
 			} else {
 				Logger.error(ClientRequest.class, "Unrecognized type: "+type);

Modified: trunk/freenet/src/freenet/node/fcp/FCPClient.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPClient.java	2009-04-07 22:11:23 UTC (rev 26622)
+++ trunk/freenet/src/freenet/node/fcp/FCPClient.java	2009-04-07 22:48:52 UTC (rev 26623)
@@ -38,7 +38,6 @@
 		this.persistenceType = persistenceType;
 		assert(persistenceType == ClientRequest.PERSIST_FOREVER || persistenceType == ClientRequest.PERSIST_REBOOT);
 		watchGlobalVerbosityMask = Integer.MAX_VALUE;
-		toStart = new LinkedList<ClientRequest>();
 		lowLevelClient = new RequestClient() {
 			public boolean persistent() {
 				return forever;
@@ -78,7 +77,6 @@
 	/** FCPClients watching us. Lazy init, sync on clientsWatchingLock */
 	private transient LinkedList<FCPClient> clientsWatching;
 	private final NullObject clientsWatchingLock = new NullObject();
-	private final LinkedList<ClientRequest> toStart;
 	final RequestClient lowLevelClient;
 	private transient RequestCompletionCallback completionCallback;
 	/** Connection mode */
@@ -175,7 +173,6 @@
 		if(container != null) {
 			container.activate(completedUnackedRequests, 2);
 			container.activate(runningPersistentRequests, 2);
-			container.activate(toStart, 2);
 			container.activate(clientRequestsByIdentifier, 2);
 		}
 		synchronized(this) {
@@ -191,11 +188,9 @@
 				}
 			} else {
 				runningPersistentRequests.add(cg);
-				if(startLater) toStart.add(cg);
 				if(container != null) {
 					cg.storeTo(container);
 					container.ext().store(runningPersistentRequests, 2);
-					if(startLater) container.store(toStart);
 				}
 			}
 			clientRequestsByIdentifier.put(ident, cg);
@@ -401,28 +396,6 @@
 		return req;
 	}
 
-	/**
-	 * Start all delayed-start requests.
-	 */
-	public void finishStart(ObjectContainer container, ClientContext context) {
-		ClientRequest[] reqs;
-		if(container != null) {
-			container.activate(toStart, 2);
-		}
-		synchronized(this) {
-			reqs = toStart.toArray(new ClientRequest[toStart.size()]);
-			toStart.clear();
-			container.store(toStart);
-		}
-		for(int i=0;i<reqs.length;i++) {
-			System.err.println("Starting migrated request "+i+" of "+reqs.length);
-			final ClientRequest req = reqs[i];
-			container.activate(req, 1);
-			req.start(container, context);
-			container.deactivate(req, 1);
-		}
-	}
-	
 	@Override
 	public String toString() {
 		return super.toString()+ ':' +name;
@@ -460,8 +433,6 @@
 		container.delete(completedUnackedRequests);
 		container.activate(clientRequestsByIdentifier, 2);
 		container.delete(clientRequestsByIdentifier);
-		container.activate(toStart, 2);
-		container.delete(toStart);
 		container.activate(lowLevelClient, 2);
 		lowLevelClient.removeFrom(container);
 		container.delete(this);
@@ -473,7 +444,6 @@
 		if(container != null) {
 			container.activate(completedUnackedRequests, 2);
 			container.activate(runningPersistentRequests, 2);
-			container.activate(toStart, 2);
 			container.activate(clientRequestsByIdentifier, 2);
 		}
 		synchronized(this) {
@@ -494,18 +464,7 @@
 			}
 			clientRequestsByIdentifier.clear();
 			container.ext().store(clientRequestsByIdentifier, 2);
-			for(ClientRequest req : toStart) {
-				if(persistenceType == ClientRequest.PERSIST_FOREVER) container.activate(req, 1);
-				toKill.add(req);
-			}
-			toStart.clear();
 		}
-		Iterator<ClientRequest> i = toStart.iterator();
-		while(i.hasNext()) {
-			ClientRequest req = i.next();
-			req.cancel(container, context);
-			req.requestWasRemoved(container, context);
-		}
 	}
 
 	public ClientGet getCompletedRequest(FreenetURI key, ObjectContainer container) {

Modified: trunk/freenet/src/freenet/node/fcp/FCPServer.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPServer.java	2009-04-07 22:11:23 UTC (rev 26622)
+++ trunk/freenet/src/freenet/node/fcp/FCPServer.java	2009-04-07 22:48:52 UTC (rev 26623)
@@ -899,33 +899,6 @@
 	 * some time to start them.
 	 */
 	public void finishStart() {
-		node.clientCore.clientContext.jobRunner.queue(new DBJob() {
-
-			public void run(ObjectContainer container, ClientContext context) {
-				globalForeverClient.finishStart(container, context);
-			}
-			
-		}, NativeThread.HIGH_PRIORITY-1, false);
-		
-		final FCPClient[] clients;
-		synchronized(this) {
-			clients = rebootClientsByName.values().toArray(new FCPClient[rebootClientsByName.size()]);
-		}
-		
-		if(clients.length > 0) {
-			node.clientCore.clientContext.jobRunner.queue(new DBJob() {
-
-				public void run(ObjectContainer container, ClientContext context) {
-					for (FCPClient client : clients) {
-						container.activate(client, 1);
-						System.err.println("Migrating client "+client.name);
-						client.finishStart(container, context);
-					}
-				}
-				
-			}, NativeThread.HIGH_PRIORITY-1, false);
-		}
-		
 		if(enablePersistentDownloads) {
 			boolean movedMain = false;
 			if(logMINOR) {
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.