Author: toad
Date: 2008-10-23 18:09:02 +0000 (Thu, 23 Oct 2008)
New Revision: 23057
Modified:
branches/db4o/freenet/src/freenet/node/NodeClientCore.java
Log:
Run startup jobs one at a time with a queue.
Modified: branches/db4o/freenet/src/freenet/node/NodeClientCore.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/NodeClientCore.java 2008-10-23
17:45:26 UTC (rev 23056)
+++ branches/db4o/freenet/src/freenet/node/NodeClientCore.java 2008-10-23
18:09:02 UTC (rev 23057)
@@ -571,23 +571,30 @@
}
}, "Startup completion thread");
- queue(new DBJob() {
+ queue(startupJobRunner, NativeThread.HIGH_PRIORITY, false);
+ }
+
+ private int startupDatabaseJobsDone = 0;
+
+ private DBJob startupJobRunner = new DBJob() {
- public void run(ObjectContainer container,
ClientContext context) {
- for(int i=0;i<startupDatabaseJobs.length;i++) {
- try {
-
container.activate(startupDatabaseJobs[i], 1);
-
startupDatabaseJobs[i].run(container, context);
- container.commit();
- } catch (Throwable t) {
- Logger.error(this, "Caught
"+t+" in startup job "+startupDatabaseJobs[i], t);
- }
- }
+ public void run(ObjectContainer container, ClientContext
context) {
+ DBJob job =
startupDatabaseJobs[startupDatabaseJobsDone];
+ try {
+ container.activate(job, 1);
+ job.run(container, context);
+ container.commit();
+ } catch (Throwable t) {
+ Logger.error(this, "Caught "+t+" in startup job
"+job, t);
+ }
+ startupDatabaseJobsDone++;
+ if(startupDatabaseJobsDone ==
startupDatabaseJobs.length)
startupDatabaseJobs = null;
- }
-
- }, NativeThread.HIGH_PRIORITY, false);
- }
+ else
+ context.jobRunner.queue(startupJobRunner,
NativeThread.HIGH_PRIORITY, false);
+ }
+
+ };
public interface SimpleRequestSenderCompletionListener {