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;
}