mirror of
https://github.com/facebook/rocksdb.git
synced 2024-11-26 16:30:56 +00:00
[Performance Branch] Fix memory leak in HashLinkListRep.GetIterator()
Summary: Full list constructed for full iterator can be leaked. This was a bug introduced when I copy the full iterator codes from hash skip list to hash link list. This patch fixes it. Test Plan: Run valgrind test against db_test and make sure the memory leak is fixed Reviewers: kailiu, haobo Reviewed By: kailiu CC: igor, leveldb Differential Revision: https://reviews.facebook.net/D15093
This commit is contained in:
parent
237a3da677
commit
5b5ab0c1a8
|
@ -108,7 +108,6 @@ class PrefixTest {
|
||||||
options.min_write_buffer_number_to_merge =
|
options.min_write_buffer_number_to_merge =
|
||||||
FLAGS_min_write_buffer_number_to_merge;
|
FLAGS_min_write_buffer_number_to_merge;
|
||||||
|
|
||||||
options.comparator = new TestKeyComparator();
|
|
||||||
options.memtable_prefix_bloom_bits = FLAGS_memtable_prefix_bloom_bits;
|
options.memtable_prefix_bloom_bits = FLAGS_memtable_prefix_bloom_bits;
|
||||||
options.memtable_prefix_bloom_probes = FLAGS_memtable_prefix_bloom_probes;
|
options.memtable_prefix_bloom_probes = FLAGS_memtable_prefix_bloom_probes;
|
||||||
|
|
||||||
|
@ -142,7 +141,9 @@ class PrefixTest {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
PrefixTest() : option_config_(kBegin) { }
|
PrefixTest() : option_config_(kBegin) {
|
||||||
|
options.comparator = new TestKeyComparator();
|
||||||
|
}
|
||||||
~PrefixTest() {
|
~PrefixTest() {
|
||||||
delete options.comparator;
|
delete options.comparator;
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,7 +125,7 @@ class HashLinkListRep : public MemTableRep {
|
||||||
class FullListIterator : public MemTableRep::Iterator {
|
class FullListIterator : public MemTableRep::Iterator {
|
||||||
public:
|
public:
|
||||||
explicit FullListIterator(FullList* list)
|
explicit FullListIterator(FullList* list)
|
||||||
: iter_(list) {}
|
: iter_(list), full_list_(list) {}
|
||||||
|
|
||||||
virtual ~FullListIterator() {
|
virtual ~FullListIterator() {
|
||||||
}
|
}
|
||||||
|
@ -177,6 +177,8 @@ class HashLinkListRep : public MemTableRep {
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
FullList::Iterator iter_;
|
FullList::Iterator iter_;
|
||||||
|
// To destruct with the iterator.
|
||||||
|
std::unique_ptr<FullList> full_list_;
|
||||||
std::string tmp_; // For passing to EncodeKey
|
std::string tmp_; // For passing to EncodeKey
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue