Fixing iterator cleanup for Tailing iterator

Immutable tailing iterator doesn't set CleanupState::mem, so we don't
have to unref it.
This commit is contained in:
Igor Canadi 2014-01-24 15:51:01 -08:00
parent b13bdfa500
commit f653fdcf5a

View file

@ -2668,9 +2668,11 @@ static void CleanupIteratorState(void* arg1, void* arg2) {
DBImpl::DeletionState deletion_state(state->db->GetOptions().
max_write_buffer_number);
state->mu->Lock();
MemTable* m = state->mem->Unref();
if (m != nullptr) {
deletion_state.memtables_to_free.push_back(m);
if (state->mem) { // not set for immutable iterator
MemTable* m = state->mem->Unref();
if (m != nullptr) {
deletion_state.memtables_to_free.push_back(m);
}
}
if (state->version) { // not set for memtable-only iterator
state->version->Unref();