Author: toad
Date: 2007-03-16 23:18:24 +0000 (Fri, 16 Mar 2007)
New Revision: 12165
Modified:
trunk/freenet/src/freenet/client/async/BaseSingleFileFetcher.java
trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
trunk/freenet/src/freenet/client/async/SingleBlockInserter.java
Log:
Remove from underlying RGA on cancel() and on changing priorities
Modified: trunk/freenet/src/freenet/client/async/BaseSingleFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/BaseSingleFileFetcher.java
2007-03-16 23:16:52 UTC (rev 12164)
+++ trunk/freenet/src/freenet/client/async/BaseSingleFileFetcher.java
2007-03-16 23:18:24 UTC (rev 12165)
@@ -8,6 +8,7 @@
import freenet.keys.ClientSSK;
import freenet.node.SendableGet;
import freenet.support.Logger;
+import freenet.support.RandomGrabArray;
public abstract class BaseSingleFileFetcher extends SendableGet {
@@ -75,8 +76,12 @@
return ctx.ignoreStore;
}
- public synchronized void cancel() {
- cancelled = true;
+ public void cancel() {
+ synchronized(this) {
+ cancelled = true;
+ }
+ RandomGrabArray arr = getParentGrabArray();
+ if(arr != null) arr.remove(this);
}
public synchronized boolean isCancelled() {
Modified: trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
===================================================================
--- trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
2007-03-16 23:16:52 UTC (rev 12164)
+++ trunk/freenet/src/freenet/client/async/ClientRequestScheduler.java
2007-03-16 23:18:24 UTC (rev 12165)
@@ -5,7 +5,6 @@
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import freenet.config.InvalidConfigValueException;
import freenet.config.SubConfig;
@@ -363,6 +362,8 @@
// Don't actually remove it as removing it is a rather
slow operation
// It will be removed when removeFirst() reaches it.
//grabArray.remove(req);
+ RandomGrabArray array = req.getParentGrabArray();
+ if(array != null) array.remove(req);
innerRegister(req);
}
synchronized(starter) {
Modified: trunk/freenet/src/freenet/client/async/SingleBlockInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SingleBlockInserter.java
2007-03-16 23:16:52 UTC (rev 12164)
+++ trunk/freenet/src/freenet/client/async/SingleBlockInserter.java
2007-03-16 23:18:24 UTC (rev 12165)
@@ -277,6 +277,8 @@
if(finished) return;
finished = true;
}
+ RandomGrabArray arr = getParentGrabArray();
+ if(arr != null) arr.remove(this);
cb.onFailure(new
InserterException(InserterException.CANCELLED), this);
}