Author: toad
Date: 2008-04-29 16:45:25 +0000 (Tue, 29 Apr 2008)
New Revision: 19613

Modified:
   trunk/freenet/src/freenet/client/async/USKFetcher.java
   trunk/freenet/src/freenet/client/async/USKManager.java
Log:
At the end of USKFetcher.cancel(), call back to USKManager to make sure we've 
been removed. Complain if we haven't.

Modified: trunk/freenet/src/freenet/client/async/USKFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/USKFetcher.java      2008-04-29 
16:41:05 UTC (rev 19612)
+++ trunk/freenet/src/freenet/client/async/USKFetcher.java      2008-04-29 
16:45:25 UTC (rev 19613)
@@ -482,6 +482,7 @@
                }
                for(int i=0;i<attempts.length;i++)
                        attempts[i].cancel();
+               uskManager.onCancelled(this);
        }

        /** Set of interested USKCallbacks. Note that we don't actually

Modified: trunk/freenet/src/freenet/client/async/USKManager.java
===================================================================
--- trunk/freenet/src/freenet/client/async/USKManager.java      2008-04-29 
16:41:05 UTC (rev 19612)
+++ trunk/freenet/src/freenet/client/async/USKManager.java      2008-04-29 
16:45:25 UTC (rev 19613)
@@ -297,4 +297,14 @@
        public int getTemporaryBackgroundFetchersLRU(){
                return temporaryBackgroundFetchersLRU.size();
        }
+
+       public void onCancelled(USKFetcher fetcher) {
+               USK clear = fetcher.getOriginalUSK().clearCopy();
+               synchronized(this) {
+                       if(backgroundFetchersByClearUSK.remove(clear) != null) {
+                               // This shouldn't happen, it's a sanity check: 
the only way we get cancelled is from USKManager, which removes us before 
calling cancel().
+                               Logger.error(this, "onCancelled for "+fetcher+" 
- was still registered, how did this happen??", new Exception("debug"));
+                       }
+               }
+       }
 }


Reply via email to