Fixing iterator cleanup for Tailing iterator

Immutable tailing iterator doesn't set CleanupState::mem, so we don't
have to unref it.
main
Igor Canadi 11 years ago
parent b13bdfa500
commit f653fdcf5a
  1. 2
      db/db_impl.cc

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

Loading…
Cancel
Save