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