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);