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"));
+ }
+ }
+ }
}