[freenet-cvs] r20897 - in branches/db4o/freenet/src/freenet: client/async support

toad at freenetproject.org toad at freenetproject.org
Tue Jul 1 10:59:34 UTC 2008


Author: toad
Date: 2008-07-01 10:59:34 +0000 (Tue, 01 Jul 2008)
New Revision: 20897

Modified:
   branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
   branches/db4o/freenet/src/freenet/support/RandomGrabArray.java
Log:
Only reschedule on coming out of cooldown if not already scheduled.
If appear to be scheduled, check with the RGA whether we really are, complain if not.

Modified: branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java	2008-07-01 10:41:01 UTC (rev 20896)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java	2008-07-01 10:59:34 UTC (rev 20897)
@@ -30,6 +30,7 @@
 import freenet.keys.NodeCHK;
 import freenet.node.RequestScheduler;
 import freenet.support.Logger;
+import freenet.support.RandomGrabArray;
 import freenet.support.api.Bucket;
 import freenet.support.io.BucketTools;
 
@@ -807,7 +808,20 @@
 		if(v != null) {
 			for(int i=0;i<v.size();i++) {
 				if(v.get(i) == segment) foundCaller = true;
-				((SplitFileFetcherSubSegment) v.get(i)).schedule(container, context, true);
+				SplitFileFetcherSubSegment sub = (SplitFileFetcherSubSegment) v.get(i);
+				RandomGrabArray rga = sub.getParentGrabArray();
+				if(sub.getParentGrabArray() == null) {
+					sub.schedule(container, context, true);
+				} else {
+//					if(logMINOR) {
+						container.activate(rga, 1);
+						if(!rga.contains(sub, container)) {
+							Logger.error(this, "Sub-segment has RGA but isn't registered to it!!: "+sub+" for "+rga);
+							sub.schedule(container, context, true);
+						}
+						container.deactivate(rga, 1);
+//					}
+				}
 			}
 		}
 		return foundCaller;

Modified: branches/db4o/freenet/src/freenet/support/RandomGrabArray.java
===================================================================
--- branches/db4o/freenet/src/freenet/support/RandomGrabArray.java	2008-07-01 10:41:01 UTC (rev 20896)
+++ branches/db4o/freenet/src/freenet/support/RandomGrabArray.java	2008-07-01 10:59:34 UTC (rev 20897)
@@ -6,6 +6,7 @@
 import com.db4o.ObjectContainer;
 
 import freenet.client.async.ClientContext;
+import freenet.client.async.SplitFileFetcherSubSegment;
 
 /**
  * An array which supports very fast remove-and-return-a-random-element.
@@ -282,4 +283,11 @@
 	public void objectOnActivate(ObjectContainer container) {
 		container.activate(contents, 1);
 	}
+
+	public boolean contains(RandomGrabArrayItem item, ObjectContainer container) {
+		container.activate(contents, 1);
+		boolean ret = contents.contains(item);
+		container.deactivate(contents, 1);
+		return ret;
+	}
 }




More information about the cvs mailing list