Author: j16sdiz
Date: 2008-12-20 16:15:15 +0000 (Sat, 20 Dec 2008)
New Revision: 24675
Modified:
trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
trunk/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
Log:
Revert "set parent=null when cancel()"
This cause NPE, yet not fixing the leak :(
Anybody have an idea why it leaks?
Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
2008-12-20 16:01:36 UTC (rev 24674)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
2008-12-20 16:15:15 UTC (rev 24675)
@@ -33,7 +33,7 @@
final ArchiveContext archiveContext;
final LinkedList decompressors;
final ClientMetadata clientMetadata;
- ClientRequester parent;
+ final ClientRequester parent;
final GetCompletionCallback cb;
final int recursionLevel;
/** The splitfile type. See the SPLITFILE_ constants on Metadata. */
@@ -295,7 +295,6 @@
public void cancel() {
for(int i=0;i<segments.length;i++)
segments[i].cancel();
- parent = null;
}
public long getToken() {
@@ -303,9 +302,6 @@
}
public void scheduleOffThread() {
- if (parent == null)
- return;
-
fetchContext.slowSerialExecutor[parent.priorityClass].execute(new Runnable() {
public void run() {
schedule();
Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-12-20 16:01:36 UTC (rev 24674)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
2008-12-20 16:15:15 UTC (rev 24675)
@@ -124,7 +124,7 @@
}
public synchronized boolean isFinished() {
- return finished || parentFetcher.parent == null ||
parentFetcher.parent.isCancelled();
+ return finished || parentFetcher.parent.isCancelled();
}
public synchronized boolean isFinishing() {
@@ -171,7 +171,7 @@
boolean decodeNow = false;
logMINOR = Logger.shouldLog(Logger.MINOR, this);
if(logMINOR) Logger.minor(this, "Fetched block "+blockNo+" on
"+seg+" data="+dataBuckets.length+" check="+checkBuckets.length);
- if (parentFetcher.parent != null && parentFetcher.parent
instanceof ClientGetter)
+ if(parentFetcher.parent instanceof ClientGetter)
((ClientGetter)parentFetcher.parent).addKeyToBinaryBlob(block);
// No need to unregister key, because it will be cleared in
tripPendingKey().
boolean dontNotify;
@@ -354,14 +354,14 @@
}
boolean isCollectingBinaryBlob() {
- if (parentFetcher.parent != null && parentFetcher.parent
instanceof ClientGetter) {
+ if(parentFetcher.parent instanceof ClientGetter) {
ClientGetter getter = (ClientGetter)
(parentFetcher.parent);
return getter.collectingBinaryBlob();
} else return false;
}
private void maybeAddToBinaryBlob(Bucket data, int i, boolean check)
throws FetchException {
- if (parentFetcher.parent != null && parentFetcher.parent
instanceof ClientGetter) {
+ if(parentFetcher.parent instanceof ClientGetter) {
ClientGetter getter = (ClientGetter)
(parentFetcher.parent);
if(getter.collectingBinaryBlob()) {
try {
@@ -410,11 +410,9 @@
// :(
if(e.isFatal()) {
fatallyFailedBlocks++;
- if (parentFetcher.parent != null)
parentFetcher.parent.fatallyFailedBlock();
} else {
failedBlocks++;
- if (parentFetcher.parent != null)
parentFetcher.parent.failedBlock();
}
// Once it is no longer possible to have a successful
fetch, fail...
@@ -543,8 +541,7 @@
synchronized(this) {
scheduled = true;
}
- if (parentFetcher.parent != null)
- parentFetcher.parent.notifyClients();
+ parentFetcher.parent.notifyClients();
if(logMINOR)
Logger.minor(this, "scheduling "+seg+" :
"+seg.blockNums);
} catch (Throwable t) {
Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
2008-12-20 16:01:36 UTC (rev 24674)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcherSubSegment.java
2008-12-20 16:15:15 UTC (rev 24675)
@@ -302,10 +302,7 @@
@Override
public Object getClient() {
- if (segment.parentFetcher.parent != null)
- return segment.parentFetcher.parent.getClient();
- else
- return null;
+ return segment.parentFetcher.parent.getClient();
}
@Override
@@ -315,10 +312,7 @@
@Override
public short getPriorityClass() {
- if (segment.parentFetcher.parent != null)
- return segment.parentFetcher.parent.priorityClass;
- else
- return -1;
+ return segment.parentFetcher.parent.priorityClass;
}
@Override
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs