Author: toad
Date: 2008-01-04 19:31:35 +0000 (Fri, 04 Jan 2008)
New Revision: 16889

Modified:
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java
Log:
Pass Node as a GetPubkey into BDBFS so we can reconstruct SSKs.

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java    2008-01-04 19:28:22 UTC (rev 
16888)
+++ trunk/freenet/src/freenet/node/Node.java    2008-01-04 19:31:35 UTC (rev 
16889)
@@ -1313,28 +1313,28 @@
                        Logger.normal(this, "Initializing CHK Datastore");
                        System.out.println("Initializing CHK Datastore 
("+maxStoreKeys+" keys)");
                        chkDatastore = 
BerkeleyDBFreenetStore.construct(lastVersion, storeDir, true, suffix, 
maxStoreKeys, 
-                                       CHKBlock.DATA_LENGTH, 
CHKBlock.TOTAL_HEADERS_LENGTH, true, BerkeleyDBFreenetStore.TYPE_CHK, 
storeEnvironment, random, storeShutdownHook, tryDbLoad, reconstructFile);
+                                       CHKBlock.DATA_LENGTH, 
CHKBlock.TOTAL_HEADERS_LENGTH, true, BerkeleyDBFreenetStore.TYPE_CHK, 
storeEnvironment, random, storeShutdownHook, tryDbLoad, reconstructFile, this);
                        Logger.normal(this, "Initializing CHK Datacache");
                        System.out.println("Initializing CHK Datacache 
("+maxCacheKeys+ ':' +maxCacheKeys+" keys)");
                        chkDatacache = 
BerkeleyDBFreenetStore.construct(lastVersion, storeDir, false, suffix, 
maxCacheKeys, 
-                                       CHKBlock.DATA_LENGTH, 
CHKBlock.TOTAL_HEADERS_LENGTH, true, BerkeleyDBFreenetStore.TYPE_CHK, 
storeEnvironment, random, storeShutdownHook, tryDbLoad, reconstructFile);
+                                       CHKBlock.DATA_LENGTH, 
CHKBlock.TOTAL_HEADERS_LENGTH, true, BerkeleyDBFreenetStore.TYPE_CHK, 
storeEnvironment, random, storeShutdownHook, tryDbLoad, reconstructFile, this);
                        Logger.normal(this, "Initializing pubKey Datastore");
                        System.out.println("Initializing pubKey Datastore");
                        pubKeyDatastore = 
BerkeleyDBFreenetStore.construct(lastVersion, storeDir, true, suffix, 
maxStoreKeys, 
-                                       DSAPublicKey.PADDED_SIZE, 0, true, 
BerkeleyDBFreenetStore.TYPE_PUBKEY, storeEnvironment, random, 
storeShutdownHook, tryDbLoad, reconstructFile);
+                                       DSAPublicKey.PADDED_SIZE, 0, true, 
BerkeleyDBFreenetStore.TYPE_PUBKEY, storeEnvironment, random, 
storeShutdownHook, tryDbLoad, reconstructFile, this);
                        Logger.normal(this, "Initializing pubKey Datacache");
                        System.out.println("Initializing pubKey Datacache 
("+maxCacheKeys+" keys)");
                        pubKeyDatacache = 
BerkeleyDBFreenetStore.construct(lastVersion, storeDir, false, suffix, 
maxCacheKeys, 
-                                       DSAPublicKey.PADDED_SIZE, 0, true, 
BerkeleyDBFreenetStore.TYPE_PUBKEY, storeEnvironment, random, 
storeShutdownHook, tryDbLoad, reconstructFile);
+                                       DSAPublicKey.PADDED_SIZE, 0, true, 
BerkeleyDBFreenetStore.TYPE_PUBKEY, storeEnvironment, random, 
storeShutdownHook, tryDbLoad, reconstructFile, this);
                        // FIXME can't auto-fix SSK stores.
                        Logger.normal(this, "Initializing SSK Datastore");
                        System.out.println("Initializing SSK Datastore");
                        sskDatastore = 
BerkeleyDBFreenetStore.construct(lastVersion, storeDir, true, suffix, 
maxStoreKeys, 
-                                       SSKBlock.DATA_LENGTH, 
SSKBlock.TOTAL_HEADERS_LENGTH, false, BerkeleyDBFreenetStore.TYPE_SSK, 
storeEnvironment, random, storeShutdownHook, tryDbLoad, reconstructFile);
+                                       SSKBlock.DATA_LENGTH, 
SSKBlock.TOTAL_HEADERS_LENGTH, false, BerkeleyDBFreenetStore.TYPE_SSK, 
storeEnvironment, random, storeShutdownHook, tryDbLoad, reconstructFile, this);
                        Logger.normal(this, "Initializing SSK Datacache");
                        System.out.println("Initializing SSK Datacache 
("+maxCacheKeys+" keys)");
                        sskDatacache = 
BerkeleyDBFreenetStore.construct(lastVersion, storeDir, false, suffix, 
maxStoreKeys, 
-                                       SSKBlock.DATA_LENGTH, 
SSKBlock.TOTAL_HEADERS_LENGTH, false, BerkeleyDBFreenetStore.TYPE_SSK, 
storeEnvironment, random, storeShutdownHook, tryDbLoad, reconstructFile);
+                                       SSKBlock.DATA_LENGTH, 
SSKBlock.TOTAL_HEADERS_LENGTH, false, BerkeleyDBFreenetStore.TYPE_SSK, 
storeEnvironment, random, storeShutdownHook, tryDbLoad, reconstructFile, this);
                } 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-04 
19:28:22 UTC (rev 16888)
+++ trunk/freenet/src/freenet/store/BerkeleyDBFreenetStore.java 2008-01-04 
19:31:35 UTC (rev 16889)
@@ -46,6 +46,7 @@
 import freenet.keys.NodeSSK;
 import freenet.keys.SSKBlock;
 import freenet.keys.SSKVerifyException;
+import freenet.node.GetPubkey;
 import freenet.node.SemiOrderedShutdownHook;
 import freenet.support.Fields;
 import freenet.support.HexUtil;
@@ -67,7 +68,7 @@
        final File reconstructFile;
        final int dataBlockSize;
        final int headerBlockSize;
-       
+
        private final short storeType;
        private final Environment environment;
        private final TupleBinding storeBlockTupleBinding;
@@ -109,7 +110,7 @@
        public static BerkeleyDBFreenetStore construct(int lastVersion, File 
baseStoreDir, boolean isStore,
                        String suffix, long maxStoreKeys, int blockSize, int 
headerSize, boolean throwOnTooFewKeys, 
                        short type, Environment storeEnvironment, RandomSource 
random, 
-                       SemiOrderedShutdownHook storeShutdownHook, boolean 
tryDbLoad, File reconstructFile) throws DatabaseException, IOException {
+                       SemiOrderedShutdownHook storeShutdownHook, boolean 
tryDbLoad, File reconstructFile, GetPubkey pubkeyCache) throws 
DatabaseException, IOException {

                /**
                * Migration strategy:
@@ -157,7 +158,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,
-                                       blockSize, headerSize, 
throwOnTooFewKeys, false, lastVersion, type, false, storeShutdownHook, 
tryDbLoad, reconstructFile, keyLength);
+                                       blockSize, headerSize, 
throwOnTooFewKeys, false, lastVersion, type, false, storeShutdownHook, 
tryDbLoad, reconstructFile, keyLength, pubkeyCache);

                } else {

@@ -166,7 +167,7 @@

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

                }

@@ -176,7 +177,7 @@
        private static BerkeleyDBFreenetStore openStore(Environment 
storeEnvironment, File baseDir, String newDBPrefix, File newStoreFile,
                        File lruFile, File keysFile, File newFixSecondaryFile, 
long maxStoreKeys, int blockSize, int headerSize, boolean throwOnTooFewKeys,
                        boolean noCheck, int lastVersion, short type, boolean 
wipe, SemiOrderedShutdownHook storeShutdownHook, 
-                       boolean tryDbLoad, File reconstructFile, int keyLength) 
throws DatabaseException, IOException {
+                       boolean tryDbLoad, File reconstructFile, int keyLength, 
GetPubkey pubkeyCache) throws DatabaseException, IOException {

                if(tryDbLoad) {
                        String dbName = newDBPrefix+"CHK";
@@ -230,7 +231,7 @@
                        // Reconstruct

                        return new BerkeleyDBFreenetStore(storeEnvironment, 
newDBPrefix, newStoreFile, lruFile, keysFile, newFixSecondaryFile, 
-                                       maxStoreKeys, blockSize, headerSize, 
type, noCheck, storeShutdownHook, reconstructFile, keyLength);
+                                       maxStoreKeys, blockSize, headerSize, 
type, noCheck, storeShutdownHook, reconstructFile, keyLength, pubkeyCache);
                }
        }

@@ -1021,7 +1022,7 @@
        * @throws IOException If the store cannot be opened because of a 
filesystem problem.
        * @throws FileNotFoundException if the dir does not exist and could not 
be created
        */
-       private BerkeleyDBFreenetStore(Environment env, String prefix, File 
storeFile, File lruFile, File keysFile, File fixSecondaryFile, long 
maxChkBlocks, int blockSize, int headerSize, short type, boolean noCheck, 
SemiOrderedShutdownHook storeShutdownHook, File reconstructFile, int keyLength) 
throws DatabaseException, IOException {
+       private BerkeleyDBFreenetStore(Environment env, String prefix, File 
storeFile, File lruFile, File keysFile, File fixSecondaryFile, long 
maxChkBlocks, int blockSize, int headerSize, short type, boolean noCheck, 
SemiOrderedShutdownHook storeShutdownHook, File reconstructFile, int keyLength, 
GetPubkey pubkeyCache) throws DatabaseException, IOException {
                logMINOR = Logger.shouldLog(Logger.MINOR, this);
                this.storeType = type;
                this.keyLength = keyLength;
@@ -1100,7 +1101,7 @@

                lastRecentlyUsed = 0;

-               reconstruct(type);
+               reconstruct(type, pubkeyCache);

                blocksInStore = countCHKBlocksFromFile();
                lastRecentlyUsed = getMaxRecentlyUsed();
@@ -1134,7 +1135,7 @@
                }
        }

-       private void reconstruct(short type) throws DatabaseException, 
IOException {
+       private void reconstruct(short type, GetPubkey pubkeyCache) throws 
DatabaseException, IOException {
                if(keysDB.count() != 0)
                        throw new IllegalStateException("Store must be empty 
before reconstruction!");
                if(type == TYPE_SSK) {


Reply via email to