Author: j16sdiz
Date: 2008-08-01 13:10:00 +0000 (Fri, 01 Aug 2008)
New Revision: 21554

Modified:
   branches/saltedhashstore/freenet/src/freenet/support/BinaryBloomFilter.java
   branches/saltedhashstore/freenet/src/freenet/support/CountingBloomFilter.java
Log:
use temp file for bloom filter rebuild if possible (prevent OOM)

Modified: 
branches/saltedhashstore/freenet/src/freenet/support/BinaryBloomFilter.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/support/BinaryBloomFilter.java 
2008-08-01 12:51:06 UTC (rev 21553)
+++ branches/saltedhashstore/freenet/src/freenet/support/BinaryBloomFilter.java 
2008-08-01 13:10:00 UTC (rev 21554)
@@ -69,6 +69,10 @@
        public void fork(int k) {
                lock.writeLock().lock();
                try {
+                       File tempFile = File.createTempFile("bloom-", ".tmp");
+                       tempFile.deleteOnExit();
+                       forkedFilter = new BinaryBloomFilter(tempFile, length, 
k);
+               } catch (IOException e) {
                        forkedFilter = new BinaryBloomFilter(length, k);
                } finally {
                        lock.writeLock().unlock();

Modified: 
branches/saltedhashstore/freenet/src/freenet/support/CountingBloomFilter.java
===================================================================
--- 
branches/saltedhashstore/freenet/src/freenet/support/CountingBloomFilter.java   
    2008-08-01 12:51:06 UTC (rev 21553)
+++ 
branches/saltedhashstore/freenet/src/freenet/support/CountingBloomFilter.java   
    2008-08-01 13:10:00 UTC (rev 21554)
@@ -84,6 +84,10 @@
        public void fork(int k) {
                lock.writeLock().lock();
                try {
+                       File tempFile = File.createTempFile("bloom-", ".tmp");
+                       tempFile.deleteOnExit();
+                       forkedFilter = new CountingBloomFilter(tempFile, 
length, k);
+               } catch (IOException e) {
                        forkedFilter = new CountingBloomFilter(length, k);
                } finally {
                        lock.writeLock().unlock();


Reply via email to