Author: toad
Date: 2007-03-09 17:10:26 +0000 (Fri, 09 Mar 2007)
New Revision: 12058

Modified:
   trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
Log:
Really drop the block when find an invalid key in reconstruct()

Modified: trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
===================================================================
--- trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2007-03-09 
16:55:28 UTC (rev 12057)
+++ trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2007-03-09 
17:10:26 UTC (rev 12058)
@@ -2,10 +2,10 @@

 import java.io.EOFException;
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.RandomAccessFile;
 import java.util.Arrays;
-import java.util.HashSet;
 import java.util.Vector;

 import org.tanukisoftware.wrapper.WrapperManager;
@@ -881,9 +881,9 @@
        freeBlocks.clear();
        for(int 
i=wantedMoveNums.length;i<unwantedMoveNums.length+freeEarlySlots.length;i++) {
                if(i < freeEarlySlots.length) {
-                       addFreeBlock(freeEarlySlots[i], false, "early slot "+i);
+                       addFreeBlock(freeEarlySlots[i], true, "early slot "+i);
                } else {
-                       
addFreeBlock(unwantedMoveNums[i-freeEarlySlots.length].longValue(), false, 
"unwanted "+(i-freeEarlySlots.length));
+                       
addFreeBlock(unwantedMoveNums[i-freeEarlySlots.length].longValue(), true, 
"unwanted "+(i-freeEarlySlots.length));
                }
        }

@@ -1130,6 +1130,11 @@
                                                        Logger.error(this, err, 
e);
                                                        System.err.println(err);
                                                        e.printStackTrace();
+                                                       t = 
environment.beginTransaction(null,null);
+                                                       DatabaseEntry 
routingkeyDBE = new DatabaseEntry(routingkey);
+                                               chkDB.delete(t, routingkeyDBE);
+                                               t.commit();
+                                               t = null;
                                                        addFreeBlock(l, true, 
"bogus key ("+type+ ')');
                                                        routingkey = null;
                                                        continue;


Reply via email to