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

Reply via email to