Author: toad
Date: 2008-12-19 00:39:18 +0000 (Fri, 19 Dec 2008)
New Revision: 24548

Modified:
   branches/db4o/freenet/src/freenet/client/ArchiveStoreContext.java
Log:
Fix temp bucket leak in archive code. Also logging.


Modified: branches/db4o/freenet/src/freenet/client/ArchiveStoreContext.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/ArchiveStoreContext.java   
2008-12-19 00:37:34 UTC (rev 24547)
+++ branches/db4o/freenet/src/freenet/client/ArchiveStoreContext.java   
2008-12-19 00:39:18 UTC (rev 24548)
@@ -5,6 +5,7 @@
 
 import freenet.keys.FreenetURI;
 import freenet.support.DoublyLinkedListImpl;
+import freenet.support.Logger;
 import freenet.support.compress.Compressor.COMPRESSOR_TYPE;
 
 /**
@@ -66,7 +67,8 @@
                ArchiveStoreItem item = null;
                while(true) {
                        synchronized (myItems) {
-                               item = (ArchiveStoreItem) myItems.pop();
+                               // removeCachedItem() will call removeItem(), 
so don't remove it here.
+                               item = (ArchiveStoreItem) myItems.head();
                        }
                        if(item == null) break;
                        manager.removeCachedItem(item);
@@ -85,7 +87,11 @@
         * necessary. */
        void removeItem(ArchiveStoreItem item) {
                synchronized(myItems) {
-                       if(myItems.remove(item) == null) return; // only 
removed once
+                       if(myItems.remove(item) == null) {
+                               if(Logger.shouldLog(Logger.MINOR, this))
+                                       Logger.minor(this, "Not removing: 
"+item+" for "+this+" - already removed");
+                               return; // only removed once
+                       }
                }
                item.innerClose();
        }

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to