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.