diff --git a/src/ripple/nodestore/backend/HyperDBFactory.cpp b/src/ripple/nodestore/backend/HyperDBFactory.cpp index 95aad76acd..aa480c8e5a 100644 --- a/src/ripple/nodestore/backend/HyperDBFactory.cpp +++ b/src/ripple/nodestore/backend/HyperDBFactory.cpp @@ -35,6 +35,7 @@ public: Scheduler& m_scheduler; BatchWriter m_batch; std::string m_name; + std::unique_ptr m_filter_policy; std::unique_ptr m_db; HyperDBBackend (size_t keyBytes, Parameters const& keyValues, @@ -63,12 +64,13 @@ public: if (keyValues ["filter_bits"].isEmpty()) { if (getConfig ().NODE_SIZE >= 2) - options.filter_policy = hyperleveldb::NewBloomFilterPolicy (10); + m_filter_policy.reset (hyperleveldb::NewBloomFilterPolicy (10)); } else if (keyValues ["filter_bits"].getIntValue() != 0) { - options.filter_policy = hyperleveldb::NewBloomFilterPolicy (keyValues ["filter_bits"].getIntValue ()); + m_filter_policy.reset (hyperleveldb::NewBloomFilterPolicy (keyValues ["filter_bits"].getIntValue ())); } + options.filter_policy = m_filter_policy.get(); if (! keyValues["open_files"].isEmpty ()) { diff --git a/src/ripple/nodestore/backend/LevelDBFactory.cpp b/src/ripple/nodestore/backend/LevelDBFactory.cpp index df88e86d7f..8fabbd9d5f 100644 --- a/src/ripple/nodestore/backend/LevelDBFactory.cpp +++ b/src/ripple/nodestore/backend/LevelDBFactory.cpp @@ -35,6 +35,7 @@ public: Scheduler& m_scheduler; BatchWriter m_batch; std::string m_name; + std::unique_ptr m_filter_policy; std::unique_ptr m_db; LevelDBBackend (int keyBytes, Parameters const& keyValues, @@ -63,12 +64,13 @@ public: if (keyValues["filter_bits"].isEmpty()) { if (getConfig ().NODE_SIZE >= 2) - options.filter_policy = leveldb::NewBloomFilterPolicy (10); + m_filter_policy.reset (leveldb::NewBloomFilterPolicy (10)); } else if (keyValues["filter_bits"].getIntValue() != 0) { - options.filter_policy = leveldb::NewBloomFilterPolicy (keyValues["filter_bits"].getIntValue()); + m_filter_policy.reset (leveldb::NewBloomFilterPolicy (keyValues["filter_bits"].getIntValue())); } + options.filter_policy = m_filter_policy.get(); if (! keyValues["open_files"].isEmpty()) { diff --git a/src/ripple/nodestore/backend/RocksDBFactory.cpp b/src/ripple/nodestore/backend/RocksDBFactory.cpp index 47620d8b43..c657bb96cf 100644 --- a/src/ripple/nodestore/backend/RocksDBFactory.cpp +++ b/src/ripple/nodestore/backend/RocksDBFactory.cpp @@ -85,6 +85,7 @@ public: Scheduler& m_scheduler; BatchWriter m_batch; std::string m_name; + std::unique_ptr m_filter_policy; std::unique_ptr m_db; RocksDBBackend (int keyBytes, Parameters const& keyValues, @@ -114,12 +115,13 @@ public: if (keyValues["filter_bits"].isEmpty()) { if (getConfig ().NODE_SIZE >= 2) - options.filter_policy = rocksdb::NewBloomFilterPolicy (10); + m_filter_policy.reset (rocksdb::NewBloomFilterPolicy (10)); } else if (keyValues["filter_bits"].getIntValue() != 0) { - options.filter_policy = rocksdb::NewBloomFilterPolicy (keyValues["filter_bits"].getIntValue()); + m_filter_policy.reset (rocksdb::NewBloomFilterPolicy (keyValues["filter_bits"].getIntValue())); } + options.filter_policy = m_filter_policy.get(); if (! keyValues["open_files"].isEmpty()) {