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) {
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs