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());
                                        }
                                }
                        }


Reply via email to