Fix filter_policy object leak in NodeStore backends

This commit is contained in:
Mark Travis
2014-08-01 16:55:00 -07:00
committed by Vinnie Falco
parent 91a227a475
commit f5afe0587f
3 changed files with 12 additions and 6 deletions

View File

@@ -35,6 +35,7 @@ public:
Scheduler& m_scheduler;
BatchWriter m_batch;
std::string m_name;
std::unique_ptr <hyperleveldb::FilterPolicy const> m_filter_policy;
std::unique_ptr <hyperleveldb::DB> 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 ())
{

View File

@@ -35,6 +35,7 @@ public:
Scheduler& m_scheduler;
BatchWriter m_batch;
std::string m_name;
std::unique_ptr <leveldb::FilterPolicy const> m_filter_policy;
std::unique_ptr <leveldb::DB> 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())
{

View File

@@ -85,6 +85,7 @@ public:
Scheduler& m_scheduler;
BatchWriter m_batch;
std::string m_name;
std::unique_ptr <rocksdb::FilterPolicy const> m_filter_policy;
std::unique_ptr <rocksdb::DB> 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())
{