Author: toad
Date: 2008-01-05 21:56:34 +0000 (Sat, 05 Jan 2008)
New Revision: 16926

Modified:
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
Log:
Always throw on too few keys

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2008-01-05 21:53:09 UTC (rev 
16925)
+++ trunk/freenet/src/freenet/node/Node.java    2008-01-05 21:56:34 UTC (rev 
16926)
@@ -1318,33 +1318,33 @@
                        System.out.println("Initializing CHK Datastore 
("+maxStoreKeys+" keys)");
                        chkDatastore = new CHKStore();
                        BerkeleyDBFreenetStore.construct(lastVersion, storeDir, 
true, suffix, maxStoreKeys, 
-                                       true, BerkeleyDBFreenetStore.TYPE_CHK, 
storeEnvironment, random, storeShutdownHook, tryDbLoad, reconstructFile, 
chkDatastore);
+                                       BerkeleyDBFreenetStore.TYPE_CHK, 
storeEnvironment, random, storeShutdownHook, tryDbLoad, reconstructFile, 
chkDatastore);
                        Logger.normal(this, "Initializing CHK Datacache");
                        System.out.println("Initializing CHK Datacache 
("+maxCacheKeys+ ':' +maxCacheKeys+" keys)");
                        chkDatacache = new CHKStore();
                        BerkeleyDBFreenetStore.construct(lastVersion, storeDir, 
false, suffix, maxCacheKeys, 
-                                       true, BerkeleyDBFreenetStore.TYPE_CHK, 
storeEnvironment, random, storeShutdownHook, tryDbLoad, reconstructFile, 
chkDatacache);
+                                       BerkeleyDBFreenetStore.TYPE_CHK, 
storeEnvironment, random, storeShutdownHook, tryDbLoad, reconstructFile, 
chkDatacache);
                        Logger.normal(this, "Initializing pubKey Datastore");
                        System.out.println("Initializing pubKey Datastore");
                        pubKeyDatastore = new PubkeyStore();
                        BerkeleyDBFreenetStore.construct(lastVersion, storeDir, 
true, suffix, maxStoreKeys, 
-                                       true, 
BerkeleyDBFreenetStore.TYPE_PUBKEY, storeEnvironment, random, 
storeShutdownHook, tryDbLoad, reconstructFile, pubKeyDatastore);
+                                       BerkeleyDBFreenetStore.TYPE_PUBKEY, 
storeEnvironment, random, storeShutdownHook, tryDbLoad, reconstructFile, 
pubKeyDatastore);
                        Logger.normal(this, "Initializing pubKey Datacache");
                        System.out.println("Initializing pubKey Datacache 
("+maxCacheKeys+" keys)");
                        pubKeyDatacache = new PubkeyStore();
                        BerkeleyDBFreenetStore.construct(lastVersion, storeDir, 
false, suffix, maxCacheKeys, 
-                                       true, 
BerkeleyDBFreenetStore.TYPE_PUBKEY, storeEnvironment, random, 
storeShutdownHook, tryDbLoad, reconstructFile, pubKeyDatacache);
+                                       BerkeleyDBFreenetStore.TYPE_PUBKEY, 
storeEnvironment, random, storeShutdownHook, tryDbLoad, reconstructFile, 
pubKeyDatacache);
                        // FIXME can't auto-fix SSK stores.
                        Logger.normal(this, "Initializing SSK Datastore");
                        System.out.println("Initializing SSK Datastore");
                        sskDatastore = new SSKStore(this);
                        BerkeleyDBFreenetStore.construct(lastVersion, storeDir, 
true, suffix, maxStoreKeys, 
-                                       true, BerkeleyDBFreenetStore.TYPE_SSK, 
storeEnvironment, random, storeShutdownHook, tryDbLoad, reconstructFile, 
sskDatastore);
+                                       BerkeleyDBFreenetStore.TYPE_SSK, 
storeEnvironment, random, storeShutdownHook, tryDbLoad, reconstructFile, 
sskDatastore);
                        Logger.normal(this, "Initializing SSK Datacache");
                        System.out.println("Initializing SSK Datacache 
("+maxCacheKeys+" keys)");
                        sskDatacache = new SSKStore(this);
                        BerkeleyDBFreenetStore.construct(lastVersion, storeDir, 
false, suffix, maxStoreKeys, 
-                                       true, BerkeleyDBFreenetStore.TYPE_SSK, 
storeEnvironment, random, storeShutdownHook, tryDbLoad, reconstructFile, 
sskDatacache);
+                                       BerkeleyDBFreenetStore.TYPE_SSK, 
storeEnvironment, random, storeShutdownHook, tryDbLoad, reconstructFile, 
sskDatacache);
                } catch (FileNotFoundException e1) {
                        String msg = "Could not open datastore: "+e1;
                        Logger.error(this, msg, e1);

Modified: trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
===================================================================
--- trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2008-01-05 
21:53:09 UTC (rev 16925)
+++ trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2008-01-05 
21:56:34 UTC (rev 16926)
@@ -102,7 +102,7 @@
        }

        public static BerkeleyDBFreenetStore construct(int lastVersion, File 
baseStoreDir, boolean isStore,
-                       String suffix, long maxStoreKeys, boolean 
throwOnTooFewKeys, 
+                       String suffix, long maxStoreKeys, 
                        short type, Environment storeEnvironment, RandomSource 
random, 
                        SemiOrderedShutdownHook storeShutdownHook, boolean 
tryDbLoad, File reconstructFile, StoreCallback callback) throws 
DatabaseException, IOException {

@@ -149,7 +149,7 @@
                        // Don't need to create a new Environment, since we can 
use the old one.

                        tmp = openStore(storeEnvironment, baseStoreDir, 
newDBPrefix, newStoreFile, lruFile, keysFile, newFixSecondaryFile, maxStoreKeys,
-                                       throwOnTooFewKeys, false, lastVersion, 
type, false, storeShutdownHook, tryDbLoad, reconstructFile, callback);
+                                       false, lastVersion, type, false, 
storeShutdownHook, tryDbLoad, reconstructFile, callback);

                } else {

@@ -157,7 +157,7 @@
                        // Start from scratch, with new store.

                        tmp = openStore(storeEnvironment, baseStoreDir, 
newDBPrefix, newStoreFile, lruFile, keysFile, newFixSecondaryFile, 
-                                       maxStoreKeys, throwOnTooFewKeys, false, 
lastVersion, type, 
+                                       maxStoreKeys, false, lastVersion, type, 
                                        false, storeShutdownHook, tryDbLoad, 
reconstructFile, callback);

                }
@@ -166,7 +166,7 @@
        }

        private static BerkeleyDBFreenetStore openStore(Environment 
storeEnvironment, File baseDir, String newDBPrefix, File newStoreFile,
-                       File lruFile, File keysFile, File newFixSecondaryFile, 
long maxStoreKeys, boolean throwOnTooFewKeys,
+                       File lruFile, File keysFile, File newFixSecondaryFile, 
long maxStoreKeys, 
                        boolean noCheck, int lastVersion, short type, boolean 
wipe, SemiOrderedShutdownHook storeShutdownHook, 
                        boolean tryDbLoad, File reconstructFile, StoreCallback 
callback) throws DatabaseException, IOException {

@@ -198,7 +198,7 @@
                try {
                        // First try just opening it.
                        return new BerkeleyDBFreenetStore(type, 
storeEnvironment, newDBPrefix, newStoreFile, lruFile, keysFile, 
newFixSecondaryFile,
-                                       maxStoreKeys, throwOnTooFewKeys, 
noCheck, wipe, storeShutdownHook, 
+                                       maxStoreKeys, noCheck, wipe, 
storeShutdownHook, 
                                        reconstructFile, callback);
                } catch (DatabaseException e) {

@@ -237,7 +237,7 @@
        * @throws DatabaseException
        * @throws FileNotFoundException if the dir does not exist and could not 
be created
        */
-       private BerkeleyDBFreenetStore(short type, Environment env, String 
prefix, File storeFile, File lruFile, File keysFile, File fixSecondaryFile, 
long maxChkBlocks, boolean throwOnTooFewKeys, boolean noCheck, boolean wipe, 
SemiOrderedShutdownHook storeShutdownHook, File reconstructFile, StoreCallback 
callback) throws IOException, DatabaseException {
+       private BerkeleyDBFreenetStore(short type, Environment env, String 
prefix, File storeFile, File lruFile, File keysFile, File fixSecondaryFile, 
long maxChkBlocks, boolean noCheck, boolean wipe, SemiOrderedShutdownHook 
storeShutdownHook, File reconstructFile, StoreCallback callback) throws 
IOException, DatabaseException {
                logMINOR = Logger.shouldLog(Logger.MINOR, this);
                logDEBUG = Logger.shouldLog(Logger.DEBUG, this);
                this.callback = callback;
@@ -455,27 +455,14 @@

                        if(((blocksInStore == 0) && (chkBlocksFromFile != 0)) ||
                                        (((blocksInStore + 10) * 1.1) < 
chkBlocksFromFile)) {
-                               if(throwOnTooFewKeys) {
-                                       try {
-                                               close(false);
-                                       } catch (Throwable t) {
-                                               Logger.error(this, "Failed to 
close: "+t, t);
-                                               System.err.println("Failed to 
close: "+t);
-                                               t.printStackTrace();
-                                       }
-                                       throw new DatabaseException("Keys in 
database: "+blocksInStore+" but keys in file: "+chkBlocksFromFile);
-                               } else if(!noCheck) {
-                                       long len = 
checkForHoles(chkBlocksFromFile, true);
-                                       dontCheckForHolesShrinking = true;
-                                       if(len < chkBlocksFromFile) {
-                                               System.err.println("Truncating 
to "+len+" from "+chkBlocksFromFile+" as no non-holes after that point");
-                                               storeRAF.setLength(len * 
(dataBlockSize + headerBlockSize));
-                                               lruRAF.setLength(len * 8);
-                                               if(keysRAF != null)
-                                                       keysRAF.setLength(len * 
keyLength);
-                                               blocksInStore = len;
-                                       }
+                               try {
+                                       close(false);
+                               } catch (Throwable t) {
+                                       Logger.error(this, "Failed to close: 
"+t, t);
+                                       System.err.println("Failed to close: 
"+t);
+                                       t.printStackTrace();
                                }
+                               throw new DatabaseException("Keys in database: 
"+blocksInStore+" but keys in file: "+chkBlocksFromFile);
                        }

                        blocksInStore = Math.max(blocksInStore, 
chkBlocksFromFile);


Reply via email to