Author: toad
Date: 2009-01-27 16:50:44 +0000 (Tue, 27 Jan 2009)
New Revision: 25318

Modified:
   branches/db4o/freenet/src/freenet/node/NodeClientCore.java
   branches/db4o/freenet/src/freenet/support/io/PersistentTempBucketFactory.java
Log:
Factor out cleanup of buckets to post-commit hook method


Modified: branches/db4o/freenet/src/freenet/node/NodeClientCore.java
===================================================================
--- branches/db4o/freenet/src/freenet/node/NodeClientCore.java  2009-01-27 
15:13:37 UTC (rev 25317)
+++ branches/db4o/freenet/src/freenet/node/NodeClientCore.java  2009-01-27 
16:50:44 UTC (rev 25318)
@@ -1373,18 +1373,7 @@
                                } else
                                        node.db.commit();
                                if(Logger.shouldLog(Logger.MINOR, this)) 
Logger.minor(this, "COMMITTED");
-                               LinkedList<DelayedFreeBucket> toFree = 
persistentTempBucketFactory.grabBucketsToFree();
-                               for(Iterator<DelayedFreeBucket> 
i=toFree.iterator();i.hasNext();) {
-                                       DelayedFreeBucket bucket = i.next();
-                                       try {
-                                               if(bucket.toFree())
-                                                       bucket.realFree();
-                                               if(bucket.toRemove())
-                                                       
bucket.realRemoveFrom(node.db);
-                                       } catch (Throwable t) {
-                                               Logger.error(this, "Caught 
"+t+" freeing bucket "+bucket+" after transaction commit", t);
-                                       }
-                               }
+                               persistentTempBucketFactory.postCommit(node.db);
                        } catch (Throwable t) {
                                if(t instanceof OutOfMemoryError) {
                                        synchronized(NodeClientCore.this) {

Modified: 
branches/db4o/freenet/src/freenet/support/io/PersistentTempBucketFactory.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/support/io/PersistentTempBucketFactory.java   
    2009-01-27 15:13:37 UTC (rev 25317)
+++ 
branches/db4o/freenet/src/freenet/support/io/PersistentTempBucketFactory.java   
    2009-01-27 16:50:44 UTC (rev 25318)
@@ -7,6 +7,7 @@
 import java.io.FileFilter;
 import java.io.IOException;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.Random;
 
@@ -201,4 +202,19 @@
        public void setEncryption(boolean encrypt) {
                this.encrypt = encrypt;
        }
+
+       public void postCommit(ObjectContainer db) {
+               LinkedList<DelayedFreeBucket> toFree = grabBucketsToFree();
+               for(Iterator<DelayedFreeBucket> 
i=toFree.iterator();i.hasNext();) {
+                       DelayedFreeBucket bucket = i.next();
+                       try {
+                               if(bucket.toFree())
+                                       bucket.realFree();
+                               if(bucket.toRemove())
+                                       bucket.realRemoveFrom(db);
+                       } catch (Throwable t) {
+                               Logger.error(this, "Caught "+t+" freeing bucket 
"+bucket+" after transaction commit", t);
+                       }
+               }
+       }
 }

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

Reply via email to