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