Author: toad
Date: 2008-10-29 19:22:31 +0000 (Wed, 29 Oct 2008)
New Revision: 23176
Modified:
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
Log:
Don't decode if we don't need to. Hopefully fixes some NPEs as well as speeding
up the case where the data is already in store.
Modified:
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-10-29 19:10:27 UTC (rev 23175)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-10-29 19:22:31 UTC (rev 23176)
@@ -318,6 +318,23 @@
for(int i=0;i<checkBuckets.length;i++)
container.activate(checkBuckets[i], 1);
}
+ int data = 0;
+ for(int i=0;i<dataBuckets.length;i++) {
+ if(dataBuckets[i].getData() != null) {
+ data++;
+ }
+ }
+ if(data == dataBuckets.length) {
+ if(logMINOR)
+ Logger.minor(this, "Already decoded");
+ if(persistent) {
+ for(int i=0;i<dataBuckets.length;i++) {
+
container.activate(dataBuckets[i].getData(), 1);
+ }
+ }
+ onDecodedSegment(container, context, null, null, null,
dataBuckets, checkBuckets);
+ return;
+ }
if(splitfileType != Metadata.SPLITFILE_NONREDUNDANT) {
FECQueue queue = context.fecQueue;
@@ -376,8 +393,6 @@
}
if(isCollectingBinaryBlob(parent)) {
for(int i=0;i<dataBuckets.length;i++) {
- if(persistent)
-
container.activate(dataBlockStatus[i], 1);
Bucket data =
dataBlockStatus[i].getData();
try {
maybeAddToBinaryBlob(data, i,
false, container, context);