Author: toad
Date: 2005-11-24 17:37:58 +0000 (Thu, 24 Nov 2005)
New Revision: 7581
Modified:
trunk/freenet/src/freenet/client/RetryTracker.java
trunk/freenet/src/freenet/client/Segment.java
trunk/freenet/src/freenet/client/SplitFetchException.java
trunk/freenet/src/freenet/io/xfer/BlockTransmitter.java
trunk/freenet/src/freenet/node/InsertHandler.java
trunk/freenet/src/freenet/node/Version.java
Log:
202:
Fixes in RetryTracker.
Logging.
Store data on an insert even if we get a REJECTED_OVERLOAD.
Modified: trunk/freenet/src/freenet/client/RetryTracker.java
===================================================================
--- trunk/freenet/src/freenet/client/RetryTracker.java 2005-11-24 16:26:39 UTC
(rev 7580)
+++ trunk/freenet/src/freenet/client/RetryTracker.java 2005-11-24 17:37:58 UTC
(rev 7581)
@@ -206,7 +206,7 @@
public synchronized void maybeStart(boolean cantCallFinished) {
if(killed) return;
Logger.minor(this, "succeeded: "+succeededBlocks.size()+",
target: "+targetSuccesses+
- ", running: "+runningBlocks.size()+", levels:
"+levels.size()+", finishOnEmpty: "+finishOnEmpty);
+ ", running: "+runningBlocks.size()+", levels:
"+levels.size()+"("+curMinLevel+"-"+curMaxLevel+"), finishOnEmpty:
"+finishOnEmpty);
if(runningBlocks.size() == 1)
Logger.minor(this, "Only block running:
"+runningBlocks.toArray()[0]);
else if(levels.isEmpty()) {
@@ -254,16 +254,22 @@
*/
public synchronized SplitfileBlock getBlock() {
if(killed) return null;
- Level l = (Level) levels.get(new Integer(curMinLevel));
+ Integer iMin = new Integer(curMinLevel);
+ Level l = (Level) levels.get(iMin);
if(l == null) {
+ if(!(curMinLevel == 0 && curMaxLevel == 0))
+ Logger.error(this, "min="+curMinLevel+",
max="+curMaxLevel+" but min does not exist!");
if(!levels.isEmpty()) {
- Integer x = (Integer)
levels.keySet().toArray()[0];
- Logger.error(this, "Inconsistent: min level =
"+curMinLevel+", max level = "+curMaxLevel+" but level exists: "+x, new
Exception("error"));
+ Integer[] levelNums = (Integer[])
levels.keySet().toArray(new Integer[levels.size()]);
+ java.util.Arrays.sort(levelNums);
+ Integer x = levelNums[0];
curMinLevel = x.intValue();
- curMaxLevel = x.intValue();
+ Integer y = levelNums[levelNums.length-1];
+ curMaxLevel = y.intValue();
+ Logger.normal(this, "Corrected:
min="+curMinLevel+", max="+curMaxLevel);
return getBlock();
}
- return null;
+ else return null;
}
return l.getBlock();
}
Modified: trunk/freenet/src/freenet/client/Segment.java
===================================================================
--- trunk/freenet/src/freenet/client/Segment.java 2005-11-24 16:26:39 UTC
(rev 7580)
+++ trunk/freenet/src/freenet/client/Segment.java 2005-11-24 17:37:58 UTC
(rev 7581)
@@ -156,6 +156,7 @@
for(int i=0;i<dataBlockStatus.length;i++) {
tracker.addBlock(dataBlockStatus[i]);
}
+ Logger.minor(this, "Added data blocks");
for(int i=0;i<checkBlockStatus.length;i++) {
tracker.addBlock(checkBlockStatus[i]);
}
@@ -181,7 +182,7 @@
// Not finished yet, need to decode
successfulFetch();
else {
- failureException = new
SplitFetchException(failed.length, fatalErrors.length);
+ failureException = new
SplitFetchException(failed.length, fatalErrors.length, succeeded.length,
minFetched);
finished = true;
parentFetcher.segmentFinished(this);
}
Modified: trunk/freenet/src/freenet/client/SplitFetchException.java
===================================================================
--- trunk/freenet/src/freenet/client/SplitFetchException.java 2005-11-24
16:26:39 UTC (rev 7580)
+++ trunk/freenet/src/freenet/client/SplitFetchException.java 2005-11-24
17:37:58 UTC (rev 7581)
@@ -4,15 +4,19 @@
final int failed;
final int fatal;
+ final int succeeded;
+ final int enough;
- public SplitFetchException(int failed, int fatal) {
+ public SplitFetchException(int failed, int fatal, int succeeded, int
enough) {
super(FetchException.SPLITFILE_ERROR);
this.failed = failed;
this.fatal = fatal;
+ this.succeeded = succeeded;
+ this.enough = enough;
}
public String getMessage() {
- return "Splitfile fetch failure: "+failed+" failed, "+fatal+"
fatal errors";
+ return "Splitfile fetch failure: "+failed+" failed, "+fatal+"
fatal errors, "+succeeded+" succeeded, "+enough+" enough";
}
private static final long serialVersionUID = 1523809424508826893L;
Modified: trunk/freenet/src/freenet/io/xfer/BlockTransmitter.java
===================================================================
--- trunk/freenet/src/freenet/io/xfer/BlockTransmitter.java 2005-11-24
16:26:39 UTC (rev 7580)
+++ trunk/freenet/src/freenet/io/xfer/BlockTransmitter.java 2005-11-24
17:37:58 UTC (rev 7581)
@@ -34,9 +34,6 @@
/**
* @author ian
- *
- * To change the template for this generated type comment go to Window -
Preferences - Java - Code Generation - Code and
- * Comments
*/
public class BlockTransmitter {
Modified: trunk/freenet/src/freenet/node/InsertHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/InsertHandler.java 2005-11-24 16:26:39 UTC
(rev 7580)
+++ trunk/freenet/src/freenet/node/InsertHandler.java 2005-11-24 17:37:58 UTC
(rev 7581)
@@ -166,6 +166,9 @@
status == InsertSender.INTERNAL_ERROR) {
msg = DMT.createFNPRejectedOverload(uid);
source.send(msg);
+ // Might as well store it anyway.
+ if(status == InsertSender.REJECTED_OVERLOAD)
+ canCommit = true;
return;
}
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2005-11-24 16:26:39 UTC (rev
7580)
+++ trunk/freenet/src/freenet/node/Version.java 2005-11-24 17:37:58 UTC (rev
7581)
@@ -20,10 +20,10 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- public static final int buildNumber = 201;
+ public static final int buildNumber = 202;
/** Oldest build of Fred we will talk to */
- public static final int lastGoodBuild = 196;
+ public static final int lastGoodBuild = 202;
/** The highest reported build of fred */
public static int highestSeenBuild = buildNumber;