Author: toad
Date: 2008-07-01 16:31:28 +0000 (Tue, 01 Jul 2008)
New Revision: 20916
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
Log:
Recognise when a selected request is not in pendingKeys for the key and
complain.
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
2008-07-01 16:03:12 UTC (rev 20915)
+++
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerBase.java
2008-07-01 16:31:28 UTC (rev 20916)
@@ -224,6 +224,23 @@
}
}
+ protected boolean inPendingKeys(SendableRequest req, Key key) {
+ Object o;
+ synchronized(pendingKeys) {
+ o = pendingKeys.get(key);
+ }
+ if(o == null) {
+ return false;
+ } else if(o instanceof SendableGet) {
+ return o == req;
+ } else {
+ SendableGet[] gets = (SendableGet[]) o;
+ for(int i=0;i<gets.length;i++)
+ if(gets[i] == req) return true;
+ }
+ return false;
+ }
+
public long countQueuedRequests() {
if(pendingKeys != null)
return pendingKeys.size();
Modified:
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
2008-07-01 16:03:12 UTC (rev 20915)
+++
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
2008-07-01 16:31:28 UTC (rev 20916)
@@ -267,6 +267,9 @@
container.set(ret);
if(logMINOR)
Logger.minor(this, "Storing "+ret);
+ if((req instanceof SendableGet) &&
inPendingKeys(req, key)) {
+ Logger.error(this, "Selected key not in
pendingKeys: key "+key+" for "+req);
+ }
} else {
ret = new ChosenRequest(req, token, key, ckey,
req.getPriorityClass(container));
}