Author: toad
Date: 2008-06-26 18:52:04 +0000 (Thu, 26 Jun 2008)
New Revision: 20777

Modified:
   branches/db4o/freenet/src/freenet/client/async/BackgroundBlockEncoder.java
   branches/db4o/freenet/src/freenet/client/async/BaseSingleFileFetcher.java
   branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
   
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
   
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
   branches/db4o/freenet/src/freenet/client/async/OfferedKeysList.java
   branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java
   branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
   
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
   branches/db4o/freenet/src/freenet/node/RequestStarter.java
   branches/db4o/freenet/src/freenet/node/SendableGet.java
   branches/db4o/freenet/src/freenet/node/SendableRequest.java
   branches/db4o/freenet/src/freenet/node/SimpleSendableInsert.java
Log:
isCancelled(ObjectContainer).
Also the unregistration path needs a container for removePendingKeys

Modified: 
branches/db4o/freenet/src/freenet/client/async/BackgroundBlockEncoder.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/BackgroundBlockEncoder.java  
2008-06-26 18:43:12 UTC (rev 20776)
+++ branches/db4o/freenet/src/freenet/client/async/BackgroundBlockEncoder.java  
2008-06-26 18:52:04 UTC (rev 20777)
@@ -30,7 +30,7 @@
        }

        public void queue(SingleBlockInserter sbi, ObjectContainer container, 
ClientContext context) {
-               if(sbi.isCancelled()) return;
+               if(sbi.isCancelled(container)) return;
                if(sbi.resultingURI != null) return;
                if(sbi.persistent()) {
                        queuePersistent(sbi, container, context);
@@ -50,7 +50,7 @@
                        for(int i=0;i<sbis.length;i++) {
                                SingleBlockInserter inserter = sbis[i];
                                if(inserter == null) continue;
-                               if(inserter.isCancelled()) continue;
+                               if(inserter.isCancelled(container)) continue;
                                if(inserter.resultingURI != null) continue;
                                if(inserter.persistent()) continue;
                                Logger.minor(this, "Queueing encode of 
"+inserter);
@@ -64,7 +64,7 @@
                        anyPersistent = true;
                        SingleBlockInserter inserter = sbis[i];
                        if(inserter == null) continue;
-                       if(inserter.isCancelled()) continue;
+                       if(inserter.isCancelled(container)) continue;
                        if(inserter.resultingURI != null) continue;
                        if(!inserter.persistent()) continue;
                        queuePersistent(inserter, container, context);
@@ -101,7 +101,7 @@
                                }
                        }
                        Logger.minor(this, "Encoding "+sbi);
-                       if(sbi.isCancelled()) continue;
+                       if(sbi.isCancelled(null)) continue;
                        if(sbi.resultingURI != null) continue;
                        sbi.tryEncode(null, context);
                }
@@ -127,7 +127,7 @@
                                try {
                                        SingleBlockInserter sbi = tag.inserter;
                                        if(sbi == null) continue; // deleted
-                                       if(sbi.isCancelled()) continue;
+                                       if(sbi.isCancelled(container)) continue;
                                        if(sbi.resultingURI != null) continue;
                                        sbi.tryEncode(container, context);
                                } catch (Throwable t) {

Modified: 
branches/db4o/freenet/src/freenet/client/async/BaseSingleFileFetcher.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/BaseSingleFileFetcher.java   
2008-06-26 18:43:12 UTC (rev 20776)
+++ branches/db4o/freenet/src/freenet/client/async/BaseSingleFileFetcher.java   
2008-06-26 18:52:04 UTC (rev 20777)
@@ -127,7 +127,7 @@
                super.unregister(false, container);
        }

-       public synchronized boolean isCancelled() {
+       public synchronized boolean isCancelled(ObjectContainer container) {
                return cancelled;
        }

@@ -152,7 +152,7 @@
                if(persistent)
                        container.activate(this, 2);
                synchronized(this) {
-                       if(isCancelled()) return;
+                       if(isCancelled(container)) return;
                        if(!key.equals(this.key.getNodeKey())) {
                                Logger.normal(this, "Got sent key "+key+" but 
want "+this.key+" for "+this);
                                return;

Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-06-26 18:43:12 UTC (rev 20776)
+++ branches/db4o/freenet/src/freenet/client/async/ClientRequestScheduler.java  
2008-06-26 18:52:04 UTC (rev 20777)
@@ -473,9 +473,9 @@
                }
        };

-       public void removePendingKey(final SendableGet getter, final boolean 
complain, final Key key) {
+       public void removePendingKey(final SendableGet getter, final boolean 
complain, final Key key, ObjectContainer container) {
                if(!getter.persistent()) {
-                       boolean dropped = 
schedTransient.removePendingKey(getter, complain, key);
+                       boolean dropped = 
schedTransient.removePendingKey(getter, complain, key, container);
                        if(dropped && offeredKeys != null && 
!node.peersWantKey(key)) {
                                for(int i=0;i<offeredKeys.length;i++)
                                        offeredKeys[i].remove(key);
@@ -487,7 +487,7 @@

                                public void run(ObjectContainer container, 
ClientContext context) {
                                        container.activate(getter, 1);
-                                       schedCore.removePendingKey(getter, 
complain, key);
+                                       schedCore.removePendingKey(getter, 
complain, key, container);
                                        if(persistentCooldownQueue != null)
                                                
persistentCooldownQueue.removeKey(key, getter, 
getter.getCooldownWakeupByKey(key, container), container);
                                }
@@ -521,7 +521,7 @@
                                        Logger.error(this, "Key "+tok+" is null 
for "+getter, new Exception("debug"));
                                continue;
                        }
-                       removePendingKey(getter, complain, ckey.getNodeKey());
+                       removePendingKey(getter, complain, ckey.getNodeKey(), 
container);
                }
        }


Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java  
    2008-06-26 18:43:12 UTC (rev 20776)
+++ 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java  
    2008-06-26 18:52:04 UTC (rev 20777)
@@ -108,7 +108,7 @@
                }
        }

-       public boolean removePendingKey(SendableGet getter, boolean complain, 
Key key) {
+       public boolean removePendingKey(SendableGet getter, boolean complain, 
Key key, ObjectContainer container) {
                boolean dropped = false;
                Object o;
                /*
@@ -150,7 +150,7 @@
                                                }
                                        }
                                        if(gets[j] == null) continue;
-                                       if(gets[j].isCancelled()) continue;
+                                       if(gets[j].isCancelled(container)) 
continue;
                                        newGets[x++] = gets[j];
                                }
                                if(x == 0) {

Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java  
    2008-06-26 18:43:12 UTC (rev 20776)
+++ 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java  
    2008-06-26 18:52:04 UTC (rev 20777)
@@ -185,7 +185,7 @@
                        container.activate(req.request.getClientRequest(), 1);
                        if(req.token != null)
                                container.activate(req.token, 5);
-                       if(req.request.isCancelled()) {
+                       if(req.request.isCancelled(container)) {
                                container.delete(req);
                                continue;
                        }
@@ -525,7 +525,7 @@
                                        Logger.minor(this, "RegisterMe: next() 
took "+(endNext-startNext));
                                container.delete(reg);
                                container.activate(reg.getter, 2);
-                               if(reg.getter.isCancelled()) continue;
+                               if(reg.getter.isCancelled(container)) continue;
                                if(logMINOR)
                                        Logger.minor(this, "Running RegisterMe 
for "+reg.getter+" : "+reg.key.addedTime+" : "+reg.key.priority);
                                // Don't need to activate, fields should exist? 
FIXME

Modified: branches/db4o/freenet/src/freenet/client/async/OfferedKeysList.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/OfferedKeysList.java 
2008-06-26 18:43:12 UTC (rev 20776)
+++ branches/db4o/freenet/src/freenet/client/async/OfferedKeysList.java 
2008-06-26 18:52:04 UTC (rev 20777)
@@ -163,7 +163,7 @@
                return false;
        }

-       public boolean isCancelled() {
+       public boolean isCancelled(ObjectContainer container) {
                return false;
        }


Modified: 
branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java     
2008-06-26 18:43:12 UTC (rev 20776)
+++ branches/db4o/freenet/src/freenet/client/async/SingleBlockInserter.java     
2008-06-26 18:52:04 UTC (rev 20777)
@@ -337,7 +337,7 @@
                return finished;
        }

-       public synchronized boolean isCancelled() {
+       public synchronized boolean isCancelled(ObjectContainer container) {
                return finished;
        }


Modified: 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2008-06-26 18:43:12 UTC (rev 20776)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2008-06-26 18:52:04 UTC (rev 20777)
@@ -400,7 +400,7 @@
                boolean allFailed;
                // Since we can't keep the key, we need to unregister for it at 
this point to avoid a memory leak
                NodeCHK key = getBlockNodeKey(blockNo, container);
-               if(key != null) seg.unregisterKey(key, context);
+               if(key != null) seg.unregisterKey(key, context, container);
                synchronized(this) {
                        if(isFinishing(container)) return; // this failure is 
now irrelevant, and cleanup will occur on the decoder thread
                        if(blockNo < dataKeys.length) {
@@ -498,11 +498,11 @@
                if(cooldown) {
                        // Register to the next sub-segment before removing 
from the old one.
                        sub.getScheduler(context).addPendingKey(key, sub);
-                       seg.unregisterKey(key.getNodeKey(), context);
+                       seg.unregisterKey(key.getNodeKey(), context, container);
                } else {
                        // If we are here we are going to retry
                        // Unregister from the old sub-segment before 
registering on the new.
-                       seg.unregisterKey(key.getNodeKey(), context);
+                       seg.unregisterKey(key.getNodeKey(), context, container);
                        if(logMINOR)
                                Logger.minor(this, "Retrying block "+blockNo+" 
on "+this+" : tries="+tries+"/"+maxTries+" : "+sub);
                        sub.add(blockNo, false, container, context);

Modified: 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java  
    2008-06-26 18:43:12 UTC (rev 20776)
+++ 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java  
    2008-06-26 18:52:04 UTC (rev 20777)
@@ -365,7 +365,7 @@
                }
        }

-       public boolean isCancelled() {
+       public boolean isCancelled(ObjectContainer container) {
                synchronized(segment) {
                        return parent.cancelled;
                }

Modified: branches/db4o/freenet/src/freenet/node/RequestStarter.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/RequestStarter.java  2008-06-26 
18:43:12 UTC (rev 20776)
+++ branches/db4o/freenet/src/freenet/node/RequestStarter.java  2008-06-26 
18:52:04 UTC (rev 20777)
@@ -173,7 +173,7 @@
                        }
                        if(req == null) continue;
                        if(!startRequest(req, logMINOR)) {
-                               if(!req.request.isCancelled())
+                               if((!req.isPersistent()) && 
req.request.isCancelled(null))
                                        Logger.normal(this, "No requests to 
start on "+req);
                        }
                        req = null;
@@ -199,7 +199,7 @@
                                if(queue.isEmpty()) break;
                                req = (ChosenRequest) queue.removeFirst();
                        }
-                       if((!req.isPersistent()) && req.request.isCancelled()) 
continue;
+                       if((!req.isPersistent()) && 
req.request.isCancelled(null)) continue;
                        break;
                }
                ChosenRequest betterReq = 
sched.getBetterNonPersistentRequest(req);
@@ -256,7 +256,7 @@
                        try {
                    freenet.support.Logger.OSThread.logPID(this);
                    if(!req.send(core, sched)) {
-                               if(!req.request.isCancelled())
+                               if((!req.isPersistent()) && 
req.request.isCancelled(null))
                                        Logger.error(this, "run() not able to 
send a request on "+req);
                                else
                                        Logger.normal(this, "run() not able to 
send a request on "+req+" - request was cancelled");

Modified: branches/db4o/freenet/src/freenet/node/SendableGet.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/SendableGet.java     2008-06-26 
18:43:12 UTC (rev 20776)
+++ branches/db4o/freenet/src/freenet/node/SendableGet.java     2008-06-26 
18:52:04 UTC (rev 20777)
@@ -73,7 +73,7 @@
                        Logger.minor(this, "Sending get for key "+keyNum+" : 
"+key);
                FetchContext ctx = getContext();
                boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
-               if((!req.isPersistent()) && isCancelled()) {
+               if((!req.isPersistent()) && isCancelled(null)) {
                        if(logMINOR) Logger.minor(this, "Cancelled: "+this);
                        // callbacks must initially run at HIGH_PRIORITY so 
they are executed before we remove the key from the currently running list
                        sched.callFailure(this, new 
LowLevelGetException(LowLevelGetException.CANCELLED), keyNum, 
NativeThread.HIGH_PRIORITY, req);
@@ -140,8 +140,8 @@
                super.unregister(staySubscribed, container);
        }

-       public final void unregisterKey(Key key, ClientContext context) {
-               getScheduler(context).removePendingKey(this, false, key);
+       public final void unregisterKey(Key key, ClientContext context, 
ObjectContainer container) {
+               getScheduler(context).removePendingKey(this, false, key, 
container);
        }

        public void internalError(final Object keyNum, final Throwable t, final 
RequestScheduler sched, ObjectContainer container, ClientContext context) {

Modified: branches/db4o/freenet/src/freenet/node/SendableRequest.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/SendableRequest.java 2008-06-26 
18:43:12 UTC (rev 20776)
+++ branches/db4o/freenet/src/freenet/node/SendableRequest.java 2008-06-26 
18:52:04 UTC (rev 20777)
@@ -61,7 +61,7 @@
        /** If true, the request has been cancelled, or has completed, either 
way it need not
         * be registered any more. isEmpty() on the other hand means there are 
no queued blocks.
         */
-       public abstract boolean isCancelled();
+       public abstract boolean isCancelled(ObjectContainer container);

        /** Get client context object */
        public abstract RequestClient getClient();

Modified: branches/db4o/freenet/src/freenet/node/SimpleSendableInsert.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/SimpleSendableInsert.java    
2008-06-26 18:43:12 UTC (rev 20776)
+++ branches/db4o/freenet/src/freenet/node/SimpleSendableInsert.java    
2008-06-26 18:52:04 UTC (rev 20777)
@@ -96,7 +96,7 @@
                return null;
        }

-       public boolean isCancelled() {
+       public boolean isCancelled(ObjectContainer container) {
                return finished;
        }



Reply via email to