Author: toad
Date: 2009-01-29 19:59:16 +0000 (Thu, 29 Jan 2009)
New Revision: 25379
Modified:
branches/db4o/freenet/src/freenet/support/io/PersistentBlobTempBucket.java
branches/db4o/freenet/src/freenet/support/io/PersistentBlobTempBucketFactory.java
branches/db4o/freenet/src/freenet/support/io/SegmentedBucketChainBucket.java
Log:
Add some nonsense detection code
Modified:
branches/db4o/freenet/src/freenet/support/io/PersistentBlobTempBucket.java
===================================================================
--- branches/db4o/freenet/src/freenet/support/io/PersistentBlobTempBucket.java
2009-01-29 19:46:41 UTC (rev 25378)
+++ branches/db4o/freenet/src/freenet/support/io/PersistentBlobTempBucket.java
2009-01-29 19:59:16 UTC (rev 25379)
@@ -183,6 +183,7 @@
// in parallel are possible... that sort of behaviour *should*
be very rare,
// you should always store it before making it publicly
available...
synchronized(this) {
+ if(tag == null) throw new NullPointerException();
p = persisted;
persisted = true;
}
Modified:
branches/db4o/freenet/src/freenet/support/io/PersistentBlobTempBucketFactory.java
===================================================================
---
branches/db4o/freenet/src/freenet/support/io/PersistentBlobTempBucketFactory.java
2009-01-29 19:46:41 UTC (rev 25378)
+++
branches/db4o/freenet/src/freenet/support/io/PersistentBlobTempBucketFactory.java
2009-01-29 19:59:16 UTC (rev 25379)
@@ -289,6 +289,16 @@
Logger.minor(this, "Removing bucket "+bucket+" for slot
"+bucket.index+" from database", new Exception("debug"));
long index = bucket.index;
PersistentBlobTempBucketTag tag = bucket.tag;
+ if(tag == null) {
+ if(!container.ext().isActive(bucket)) {
+ Logger.error(this, "BUCKET NOT ACTIVE IN
REMOVE: "+bucket, new Exception("error"));
+ container.activate(bucket, 1);
+ tag = bucket.tag;
+ index = bucket.index;
+ } else {
+ Logger.error(this, "NO TAG ON BUCKET REMOVING:
"+bucket, new Exception("error"));
+ }
+ }
container.activate(tag, 1);
if(!bucket.persisted()) {
maybeShrink(container);
Modified:
branches/db4o/freenet/src/freenet/support/io/SegmentedBucketChainBucket.java
===================================================================
---
branches/db4o/freenet/src/freenet/support/io/SegmentedBucketChainBucket.java
2009-01-29 19:46:41 UTC (rev 25378)
+++
branches/db4o/freenet/src/freenet/support/io/SegmentedBucketChainBucket.java
2009-01-29 19:59:16 UTC (rev 25379)
@@ -280,7 +280,12 @@
dbJobRunner.runBlocking(new DBJob() {
public void run(ObjectContainer
container, ClientContext context) {
- oldSeg.storeTo(container);
+
if(!container.ext().isActive(oldSeg)) {
+ Logger.error(this, "OLD
SEGMENT NOT ACTIVE: "+oldSeg, new Exception("error"));
+
container.activate(oldSeg, 1);
+ } else {
+
oldSeg.storeTo(container);
+ }
container.ext().store(segments,
1);
container.ext().store(SegmentedBucketChainBucket.this, 1);
container.deactivate(oldSeg, 1);
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs