Author: toad
Date: 2008-06-27 00:10:36 +0000 (Fri, 27 Jun 2008)
New Revision: 20806
Modified:
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
Log:
haveBlock(): activate the block
Modified:
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-06-26 23:57:20 UTC (rev 20805)
+++ branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-06-27 00:10:36 UTC (rev 20806)
@@ -788,12 +788,16 @@
this.fail(new FetchException(FetchException.INTERNAL_ERROR,
"FEC failure: "+t, t), container, context);
}
- public boolean haveBlock(int blockNo) {
- if(blockNo < dataBuckets.length)
- return dataBuckets[blockNo] != null &&
dataBuckets[blockNo].hasData();
- else {
+ public boolean haveBlock(int blockNo, ObjectContainer container) {
+ if(blockNo < dataBuckets.length) {
+ if(dataBuckets[blockNo] == null) return false;
+ if(persistent) container.activate(dataBuckets[blockNo],
1);
+ return dataBuckets[blockNo].hasData();
+ } else {
blockNo -= dataBuckets.length;
- return checkBuckets[blockNo] != null &&
checkBuckets[blockNo].hasData();
+ if(checkBuckets[blockNo] != null) return false;
+ if(persistent)
container.activate(checkBuckets[blockNo], 1);
+ return checkBuckets[blockNo].hasData();
}
}
}
Modified:
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
===================================================================
---
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
2008-06-26 23:57:20 UTC (rev 20805)
+++
branches/db4o/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
2008-06-27 00:10:36 UTC (rev 20806)
@@ -142,7 +142,7 @@
Key key =
segment.getBlockNodeKey(((Integer)ret).intValue(), container);
if(key == null) {
if(segment.isFinishing(container) ||
segment.isFinished(container)) return null;
-
if(segment.haveBlock(((Integer)ret).intValue()))
+
if(segment.haveBlock(((Integer)ret).intValue(), container))
Logger.error(this, "Already
have block "+ret+" but was in blockNums on "+this);
else
Logger.error(this, "Key is null
for block "+ret+" for "+this);