r26862 - trunk/freenet/src/freenet/client/async
[email protected] Wed, 15 Apr 2009 22:39:47 +0000
| Newsgroups | gmane.network.freenet.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: toad
Date: 2009-04-15 22:39:47 +0000 (Wed, 15 Apr 2009)
New Revision: 26862
Modified:
trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
trunk/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
Log:
dontSchedule is always true
Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 2009-04-15 22:36:46 UTC (rev 26861)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 2009-04-15 22:39:47 UTC (rev 26862)
@@ -960,7 +960,7 @@
Logger.minor(this, "Added to cooldown queue: "+key+" for "+this+" was on segment "+seg+" now registered to "+sub);
} else {
// If we are here we are going to retry
- mustSchedule = sub.add(blockNo, true, container, context, false);
+ mustSchedule = sub.add(blockNo, container, context, false);
if(logMINOR)
Logger.minor(this, "Retrying block "+blockNo+" on "+this+" : tries="+tries+"/"+maxTries+" : "+sub);
}
@@ -1069,7 +1069,7 @@
SplitFileFetcherSubSegment seg = getSubSegment(0, container, false, null);
if(persistent)
container.activate(seg, 1);
- seg.addAll(dataRetries.length+checkRetries.length, true, container, context, false);
+ seg.addAll(dataRetries.length+checkRetries.length, container, context, false);
if(logMINOR)
Logger.minor(this, "scheduling "+seg+" : "+seg.blockNums);
@@ -1218,7 +1218,7 @@
Logger.minor(this, "Retrying after cooldown on "+this+": data block "+i+" on "+this+" : tries="+tries+"/"+maxTries+" : "+sub);
if(v == null) v = new Vector<SplitFileFetcherSubSegment>();
// We always schedule. FIXME: only schedule if sub.add() returns true???
- sub.add(i, true, container, context, true);
+ sub.add(i, container, context, true);
if(!v.contains(sub)) v.add(sub);
notFound = false;
} else {
@@ -1242,7 +1242,7 @@
if(logMINOR)
Logger.minor(this, "Retrying after cooldown on "+this+": check block "+i+" on "+this+" : tries="+tries+"/"+maxTries+" : "+sub);
if(v == null) v = new Vector<SplitFileFetcherSubSegment>();
- sub.add(i+dataKeys.length, true, container, context, true);
+ sub.add(i+dataKeys.length, container, context, true);
if(!v.contains(sub)) v.add(sub);
notFound = false;
} else {
Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java 2009-04-15 22:36:46 UTC (rev 26861)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java 2009-04-15 22:39:47 UTC (rev 26862)
@@ -487,20 +487,19 @@
return false;
}
- public void addAll(int blocks, boolean dontSchedule, ObjectContainer container, ClientContext context, boolean dontComplainOnDupes) {
+ public void addAll(int blocks, ObjectContainer container, ClientContext context, boolean dontComplainOnDupes) {
int[] list = new int[blocks];
for(int i=0;i<blocks;i++) list[i] = i;
- addAll(list, dontSchedule, container, context, dontComplainOnDupes);
+ addAll(list, container, context, dontComplainOnDupes);
}
- public void addAll(int[] blocks, boolean dontSchedule, ObjectContainer container, ClientContext context, boolean dontComplainOnDupes) {
+ public void addAll(int[] blocks, ObjectContainer container, ClientContext context, boolean dontComplainOnDupes) {
if(persistent) {
// container.activate(segment, 1);
container.activate(blockNums, 1);
}
boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
- if(logMINOR) Logger.minor(this, "Adding "+blocks+" blocks to "+this+" dontSchedule="+dontSchedule);
- boolean schedule = true;
+ if(logMINOR) Logger.minor(this, "Adding "+blocks+" blocks to "+this);
synchronized(segment) {
if(cancelled)
throw new IllegalStateException("Adding blocks to already cancelled "+this);
@@ -515,50 +514,22 @@
} else {
blockNums.add(ii);
}
- if(dontSchedule) schedule = false;
- /**
- * Race condition:
- *
- * Starter thread sees there is only one block on us, so removes us.
- * Another thread adds a block. We don't schedule as we now have two blocks.
- * Starter thread removes us.
- * Other blocks may be added later, but we are never rescheduled.
- *
- * Fixing this by only removing the SendableRequest after we've removed the
- * block is nontrivial with the current code.
- * So what we do here is simply check whether we are registered, instead of
- * checking whether blockNums.size() > 1 as we used to.
- */
- if(schedule && getParentGrabArray() != null) {
- if(logMINOR) Logger.minor(this, "Already registered, not scheduling: "+blockNums.size()+" : "+blockNums);
- schedule = false;
- }
-
}
}
if(persistent)
container.store(blockNums);
- if(schedule) {
- // Only need to register once for all the blocks.
- try {
- context.getChkFetchScheduler().register(null, new SendableGet[] { this }, persistent, true, container, null, true);
- } catch (KeyListenerConstructionException e) {
- Logger.error(this, "Impossible: "+e+" on "+this, e);
- }
- }
-
}
/**
* @return True if the caller should schedule.
*/
- public boolean add(int blockNo, boolean dontSchedule, ObjectContainer container, ClientContext context, boolean dontComplainOnDupes) {
+ public boolean add(int blockNo, ObjectContainer container, ClientContext context, boolean dontComplainOnDupes) {
if(persistent) {
// container.activate(segment, 1);
container.activate(blockNums, 1);
}
boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
- if(logMINOR) Logger.minor(this, "Adding block "+blockNo+" to "+this+" dontSchedule="+dontSchedule);
+ if(logMINOR) Logger.minor(this, "Adding block "+blockNo+" to "+this);
if(blockNo < 0) throw new IllegalArgumentException();
Integer i = Integer.valueOf(blockNo);
@@ -594,15 +565,7 @@
}
if(persistent)
container.store(blockNums);
- if(schedule) {
- if(dontSchedule) return true;
- try {
- context.getChkFetchScheduler().register(null, new SendableGet[] { this }, persistent, true, container, null, true);
- } catch (KeyListenerConstructionException e) {
- Logger.error(this, "Impossible: "+e+" on "+this, e);
- }
- }
- return false;
+ return schedule;
}
@Override