Author: toad
Date: 2008-06-20 12:38:23 +0000 (Fri, 20 Jun 2008)
New Revision: 20516

Modified:
   branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java
   branches/db4o/freenet/src/freenet/support/io/DelayedFreeBucket.java
   
branches/db4o/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucket.java
   branches/db4o/freenet/src/freenet/support/io/TempFileBucket.java
Log:
Cascading activation of buckets and their (internal i.e. other buckets) 
dependancies.
Explicitly activate the bucket when starting an insert.
Small simple splitfile inserts more or less work persistently now. There are 
some counting issues.
Logging. toString().

Modified: branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java
===================================================================
--- branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java      
2008-06-20 11:27:47 UTC (rev 20515)
+++ branches/db4o/freenet/src/freenet/client/async/SingleFileInserter.java      
2008-06-20 12:38:23 UTC (rev 20516)
@@ -104,6 +104,8 @@
                        }
                }
                Bucket data = block.getData();
+               if(parent.persistent())
+                       container.activate(data, 1); // Buckets will cascade if 
necessary
                if(data.size() > COMPRESS_OFF_THREAD_LIMIT) {
                        // Run off thread
                        OffThreadCompressor otc = new OffThreadCompressor();
@@ -523,6 +525,8 @@
                                        metadataPutter = new 
SingleFileInserter(parent, this, newBlock, true, ctx, false, getCHKOnly, false, 
token, false, true, metaPutterTargetFilename, earlyEncode);
                                        // If EarlyEncode, then start the 
metadata insert ASAP, to get the key.
                                        // Otherwise, wait until the data is 
fetchable (to improve persistence).
+                                       if(logMINOR)
+                                               Logger.minor(this, "Created 
metadata putter for "+this+" : "+metadataPutter+" bucket "+metadataBucket+" 
size "+metadataBucket.size());
                                        if(parent.persistent())
                                                container.set(this);
                                        if(!(earlyEncode || 
splitInsertSuccess)) return;

Modified: branches/db4o/freenet/src/freenet/support/io/DelayedFreeBucket.java
===================================================================
--- branches/db4o/freenet/src/freenet/support/io/DelayedFreeBucket.java 
2008-06-20 11:27:47 UTC (rev 20515)
+++ branches/db4o/freenet/src/freenet/support/io/DelayedFreeBucket.java 
2008-06-20 12:38:23 UTC (rev 20516)
@@ -97,8 +97,18 @@
        }

        public void removeFrom(ObjectContainer container) {
+               if(Logger.shouldLog(Logger.MINOR, this))
+                       Logger.minor(this, "Removing from database: "+this);
                bucket.removeFrom(container);
                container.delete(this);
        }

+       public String toString() {
+               return super.toString()+":"+bucket.toString();
+       }
+       
+       public void objectOnActivate(ObjectContainer container) {
+               // Cascading activation of dependancies
+               container.activate(bucket, 1);
+       }
 }
\ No newline at end of file

Modified: 
branches/db4o/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucket.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucket.java
  2008-06-20 11:27:47 UTC (rev 20515)
+++ 
branches/db4o/freenet/src/freenet/support/io/PaddedEphemerallyEncryptedBucket.java
  2008-06-20 12:38:23 UTC (rev 20516)
@@ -374,9 +374,16 @@
        }

        public void removeFrom(ObjectContainer container) {
+               if(Logger.shouldLog(Logger.MINOR, this))
+                       Logger.minor(this, "Removing from database: "+this);
                bucket.removeFrom(container);
                // The random is passed in and not our responsibility.
                container.delete(this);
        }
+       
+       public void objectOnActivate(ObjectContainer container) {
+               // Cascading activation of dependancies
+               container.activate(bucket, 1);
+       }

 }

Modified: branches/db4o/freenet/src/freenet/support/io/TempFileBucket.java
===================================================================
--- branches/db4o/freenet/src/freenet/support/io/TempFileBucket.java    
2008-06-20 11:27:47 UTC (rev 20515)
+++ branches/db4o/freenet/src/freenet/support/io/TempFileBucket.java    
2008-06-20 12:38:23 UTC (rev 20516)
@@ -91,6 +91,8 @@
        }

        public void removeFrom(ObjectContainer container) {
+               if(Logger.shouldLog(Logger.MINOR, this))
+                       Logger.minor(this, "Removing from database: "+this);
                // filenameGenerator is a global, we don't need to worry about 
it.
                container.delete(this);
        }


Reply via email to