mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
Fix filter_policy object leak in NodeStore backends
This commit is contained in:
committed by
Vinnie Falco
parent
91a227a475
commit
f5afe0587f
@@ -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 ())
|
||||
{
|
||||
|
||||
@@ -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())
|
||||
{
|
||||
|
||||
@@ -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())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user