Author: toad
Date: 2008-10-02 22:07:34 +0000 (Thu, 02 Oct 2008)
New Revision: 22919

Modified:
   branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java
   branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
Log:
Activation on decodedLength()


Modified: branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java        
2008-10-02 22:06:54 UTC (rev 22918)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcher.java        
2008-10-02 22:07:34 UTC (rev 22919)
@@ -114,6 +114,8 @@
                        FetchContext newCtx, ArrayList decompressors2, 
ClientMetadata clientMetadata, 
                        ArchiveContext actx, int recursionLevel, Bucket 
returnBucket, long token2, ObjectContainer container, ClientContext context) 
throws FetchException, MetadataParseException {
                this.persistent = parent2.persistent();
+               if(Logger.shouldLog(Logger.MINOR, this))
+                       Logger.minor(this, "Persistence = "+persistent+" from 
"+parent2, new Exception("debug"));
                this.hashCode = super.hashCode();
                this.finished = false;
                this.returnBucket = returnBucket;
@@ -345,9 +347,10 @@
                        }
                        s.throwError();
                        // If still here, it succeeded
-                       finalLength += s.decodedLength();
+                       long sz = s.decodedLength(container);
+                       finalLength += sz;
                        if(logMINOR)
-                               Logger.minor(this, "Segment "+i+" decoded 
length "+s.decodedLength()+" total length now "+finalLength+" for 
"+s.dataBuckets.length+" blocks which should be "+(s.dataBuckets.length * 
NodeCHK.BLOCK_SIZE));
+                               Logger.minor(this, "Segment "+i+" decoded 
length "+sz+" total length now "+finalLength+" for "+s.dataBuckets.length+" 
blocks which should be "+(s.dataBuckets.length * NodeCHK.BLOCK_SIZE));
                        // Healing is done by Segment
                }
                if(finalLength > overrideLength) {
@@ -443,6 +446,8 @@
                                }
                                finished = true;
                        }
+                       if(persistent)
+                               container.store(this);
                        Bucket data = finalStatus(container, context);
                        // Decompress
                        if(persistent) {

Modified: 
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2008-10-02 22:06:54 UTC (rev 22918)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2008-10-02 22:07:34 UTC (rev 22919)
@@ -160,8 +160,11 @@
                        throw failureException;
        }

-       /** Decoded length? */
-       public long decodedLength() {
+       /** Decoded length? 
+        * @param container */
+       public long decodedLength(ObjectContainer container) {
+               if(persistent)
+                       container.activate(decodedData, 1);
                return decodedData.size();
        }



Reply via email to