Author: j16sdiz
Date: 2008-07-14 14:09:43 +0000 (Mon, 14 Jul 2008)
New Revision: 21134
Modified:
branches/saltedhashstore/freenet/src/freenet/store/saltedhash/SaltedHashFreenetStore.java
branches/saltedhashstore/freenet/src/freenet/support/BloomFilter.java
Log:
move filter length check to BloomFilter.java
Modified:
branches/saltedhashstore/freenet/src/freenet/store/saltedhash/SaltedHashFreenetStore.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/store/saltedhash/SaltedHashFreenetStore.java
2008-07-14 14:09:22 UTC (rev 21133)
+++
branches/saltedhashstore/freenet/src/freenet/store/saltedhash/SaltedHashFreenetStore.java
2008-07-14 14:09:43 UTC (rev 21134)
@@ -111,11 +111,11 @@
openStoreFiles(baseDir, name);
File bloomFile = new File(this.baseDir, name + ".bloom");
- if (!bloomFile.exists() || bloomFile.length() !=
bloomFilterSize / 8) {
+ bloomFilter = new BloomFilter(bloomFile, bloomFilterSize,
bloomFilterK);
+ if (bloomFilter.needRebuild()) {
flags |= FLAG_REBUILD_BLOOM;
checkBloom = false;
}
- bloomFilter = new BloomFilter(bloomFile, bloomFilterSize,
bloomFilterK);
if ((flags & FLAG_DIRTY) != 0)
System.err.println("Datastore(" + name + ") is dirty.");
Modified: branches/saltedhashstore/freenet/src/freenet/support/BloomFilter.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/support/BloomFilter.java
2008-07-14 14:09:22 UTC (rev 21133)
+++ branches/saltedhashstore/freenet/src/freenet/support/BloomFilter.java
2008-07-14 14:09:43 UTC (rev 21134)
@@ -24,6 +24,7 @@
/** Number of hash functions */
protected final int k;
private ReadWriteLock lock = new ReentrantReadWriteLock();
+ private boolean needRebuild;
/**
* Constructor
@@ -52,6 +53,8 @@
public BloomFilter(File file, int length, int k) throws IOException {
if (length % 8 != 0)
throw new IllegalArgumentException();
+ if (!file.exists() || file.length() != length / 8)
+ needRebuild = true;
RandomAccessFile raf = new RandomAccessFile(file, "rw");
raf.setLength(length / 8);
@@ -200,4 +203,10 @@
return (int) k;
}
+
+ public boolean needRebuild() {
+ boolean _needRebuild = needRebuild;
+ needRebuild = false;
+ return _needRebuild;
+ }
}