Author: toad
Date: 2006-07-26 17:21:06 +0000 (Wed, 26 Jul 2006)
New Revision: 9776

Modified:
   trunk/freenet/src/freenet/client/async/SplitFileInserter.java
   trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java
   trunk/freenet/src/freenet/node/Version.java
   trunk/freenet/src/freenet/node/fcp/ClientPut.java
Log:
906: If a segment is finished, finish it, even if the finished flag wasn't set.

Modified: trunk/freenet/src/freenet/client/async/SplitFileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileInserter.java       
2006-07-26 17:19:26 UTC (rev 9775)
+++ trunk/freenet/src/freenet/client/async/SplitFileInserter.java       
2006-07-26 17:21:06 UTC (rev 9776)
@@ -230,11 +230,11 @@
        }

        public void segmentHasURIs(SplitFileInserterSegment segment) {
-               if(haveSentMetadata) {
-                       return;
-               }
-               
                synchronized(this) {
+                       if(haveSentMetadata) {
+                               return;
+                       }
+                       
                        for(int i=0;i<segments.length;i++) {
                                if(!segments[i].hasURIs())
                                        return;
@@ -257,9 +257,8 @@
                                // Create Metadata
                                m = new Metadata(splitfileAlgorithm, dataURIs, 
checkURIs, segmentSize, checkSegmentSize, cm, dataLength, compressionCodec, 
isMetadata, insertAsArchiveManifest);
                        }
+                       haveSentMetadata = true;
                }
-               haveSentMetadata = true;
-               
                if(missingURIs) {
                        Logger.minor(this, "Missing URIs");
                        // Error
@@ -330,9 +329,17 @@
                if(countDataBlocks > 32)
                        parent.onMajorProgress();
                synchronized(this) {
-                       if(finished) return;
-                       for(int i=0;i<segments.length;i++)
-                               if(!segments[i].isFinished()) allGone = false;
+                       if(finished) {
+                               Logger.minor(this, "Finished already");
+                               return;
+                       }
+                       for(int i=0;i<segments.length;i++) {
+                               if(!segments[i].isFinished()) {
+                                       Logger.minor(this, "Segment not 
finished: "+i+": "+segments[i]);
+                                       allGone = false;
+                                       break;
+                               }
+                       }

                        InserterException e = segment.getException();
                        if((e != null) && e.isFatal()) {
@@ -346,6 +353,7 @@
        }

        private void onAllFinished() {
+               Logger.minor(this, "All finished");
                try {
                        // Finished !!
                        FailureCodeTracker tracker = new 
FailureCodeTracker(true);
@@ -353,6 +361,7 @@
                        for(int i=0;i<segments.length;i++) {
                                InserterException e = 
segments[i].getException();
                                if(e == null) continue;
+                               Logger.minor(this, "Failure on segment "+i+" : 
"+segments[i]+" : "+e, e);
                                allSucceeded = false;
                                if(e.errorCodes != null)
                                        tracker.merge(e.errorCodes);

Modified: trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java        
2006-07-26 17:19:26 UTC (rev 9775)
+++ trunk/freenet/src/freenet/client/async/SplitFileInserterSegment.java        
2006-07-26 17:21:06 UTC (rev 9776)
@@ -268,11 +268,13 @@
        }

        public void start() throws InserterException {
+               boolean fin = true;
                for(int i=0;i<dataBlockInserters.length;i++) {
                        if(dataBlocks[i] != null) { // else already finished on 
creation
                                dataBlockInserters[i] = 
                                        new SingleBlockInserter(parent.parent, 
dataBlocks[i], (short)-1, FreenetURI.EMPTY_CHK_URI, blockInsertContext, this, 
false, CHKBlock.DATA_LENGTH, i, getCHKOnly, false, false, parent.token);
                                dataBlockInserters[i].schedule();
+                               fin = false;
                        } else {
                                parent.parent.completedBlock(true);
                        }
@@ -284,10 +286,13 @@
                        Thread t = new Thread(new EncodeBlocksRunnable(), 
"Blocks encoder");
                        t.setDaemon(true);
                        t.start();
+                       fin = false;
                } else if(encoded) {
                        for(int i=0;i<checkBlockInserters.length;i++) {
                                if(checkBlocks[i] == null)
                                        parent.parent.completedBlock(true);
+                               else
+                                       fin = false;
                        }
                }
                if(encoded) {
@@ -296,6 +301,7 @@
                if(hasURIs) {
                        parent.segmentHasURIs(this);
                }
+               if(fin) finish();
                if(finished) {
                        parent.segmentFinished(this);
                }

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-07-26 17:19:26 UTC (rev 
9775)
+++ trunk/freenet/src/freenet/node/Version.java 2006-07-26 17:21:06 UTC (rev 
9776)
@@ -18,7 +18,7 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       private static final int buildNumber = 905;
+       private static final int buildNumber = 906;

        /** Oldest build of Fred we will talk to */
        private static final int oldLastGoodBuild = 870;

Modified: trunk/freenet/src/freenet/node/fcp/ClientPut.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPut.java   2006-07-26 17:19:26 UTC 
(rev 9775)
+++ trunk/freenet/src/freenet/node/fcp/ClientPut.java   2006-07-26 17:21:06 UTC 
(rev 9776)
@@ -166,6 +166,7 @@
        }

        public void start() {
+               Logger.minor(this, "Starting "+this+" : "+identifier);
                if(finished) return;
                try {
                        inserter.start();


Reply via email to