[freenet-cvs] r20916 - branches/db4o/freenet/src/freenet/client/async

toad at freenetproject.org toad at freenetproject.org
Tue Jul 1 16:31:28 UTC 2008


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




More information about the cvs mailing list