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;


Reply via email to