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

Reply via email to