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

Reply via email to