Author: nextgens
Date: 2007-02-24 21:11:05 +0000 (Sat, 24 Feb 2007)
New Revision: 11908
Modified:
trunk/freenet/src/freenet/client/async/USKManager.java
trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
Log:
Maybe catch #1147 : USKFetchers are never freed ... add a new metric on
/statistic/
Modified: trunk/freenet/src/freenet/client/async/USKManager.java
===================================================================
--- trunk/freenet/src/freenet/client/async/USKManager.java 2007-02-24
20:38:02 UTC (rev 11907)
+++ trunk/freenet/src/freenet/client/async/USKManager.java 2007-02-24
21:11:05 UTC (rev 11908)
@@ -41,19 +41,8 @@
final FetchContext backgroundFetchContext;
final ClientRequestScheduler chkRequestScheduler;
final ClientRequestScheduler sskRequestScheduler;
+
- public USKManager(FetchContext backgroundFetchContext,
ClientRequestScheduler chkRequestScheduler, ClientRequestScheduler
sskRequestScheduler) {
- latestVersionByClearUSK = new HashMap();
- subscribersByClearUSK = new HashMap();
- fetchersByUSK = new HashMap();
- checkersByUSK = new HashMap();
- backgroundFetchersByClearUSK = new HashMap();
- temporaryBackgroundFetchersLRU = new LRUQueue();
- this.backgroundFetchContext = backgroundFetchContext;
- this.chkRequestScheduler = chkRequestScheduler;
- this.sskRequestScheduler = sskRequestScheduler;
- }
-
public USKManager(NodeClientCore core) {
backgroundFetchContext =
core.makeClient(RequestStarter.UPDATE_PRIORITY_CLASS).getFetcherContext();
backgroundFetchContext.followRedirects = false;
@@ -129,11 +118,6 @@
if(sched != null) sched.schedule();
}
- synchronized void finished(USKFetcher f) {
- USK u = f.getOriginalUSK();
- fetchersByUSK.remove(u);
- }
-
void update(USK origUSK, long number) {
boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
if(logMINOR) Logger.minor(this, "Updating "+origUSK.getURI()+"
: "+number);
@@ -209,8 +193,10 @@
System.arraycopy(callbacks, 0, newCallbacks, 0, j);
if(newCallbacks.length > 0)
subscribersByClearUSK.put(clear, callbacks);
- else
+ else{
subscribersByClearUSK.remove(clear);
+ fetchersByUSK.remove(origUSK);
+ }
if(runBackgroundFetch) {
USKFetcher f = (USKFetcher)
backgroundFetchersByClearUSK.get(clear);
f.removeSubscriber(cb);
@@ -243,4 +229,14 @@
public void unsubscribeContent(USK origUSK, USKRetriever ret, boolean
runBackgroundFetch) {
unsubscribe(origUSK, ret, runBackgroundFetch);
}
+
+ // REMOVE: DO NOT Synchronize! ... debugging only.
+ /**
+ * The result of that method will be displayed on the Statistic Toadlet
: it will help catching #1147
+ * Afterwards it should be removed: it's not usefull :)
+ * @return the number of Fetchers started by USKManager
+ */
+ public int getFetcherByUSKSize(){
+ return fetchersByUSK.size();
+ }
}
Modified: trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
2007-02-24 20:38:02 UTC (rev 11907)
+++ trunk/freenet/src/freenet/clients/http/StatisticsToadlet.java
2007-02-24 21:11:05 UTC (rev 11908)
@@ -226,6 +226,7 @@
if (advancedModeEnabled) {
if (numARKFetchers > 0) {
activityList.addChild("li",
"ARK\u00a0Fetch\u00a0Requests:\u00a0" + numARKFetchers);
+ activityList.addChild("li",
"FetcherByUSKSize:\u00a0" + node.clientCore.uskManager.getFetcherByUSKSize());
}
}
}