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;
+       }
 }


Reply via email to