Ignore dropped column families -- don't flush or compact them
This commit is contained in:
parent
1e0d47276c
commit
d4f2c610d3
@ -279,7 +279,8 @@ DBImpl::~DBImpl() {
|
|||||||
if (flush_on_destroy_) {
|
if (flush_on_destroy_) {
|
||||||
autovector<ColumnFamilyData*> to_delete;
|
autovector<ColumnFamilyData*> to_delete;
|
||||||
for (auto cfd : *versions_->GetColumnFamilySet()) {
|
for (auto cfd : *versions_->GetColumnFamilySet()) {
|
||||||
if (cfd->mem()->GetFirstSequenceNumber() != 0) {
|
// TODO(icanadi) do this in ColumnFamilyData destructor
|
||||||
|
if (!cfd->IsDropped() && cfd->mem()->GetFirstSequenceNumber() != 0) {
|
||||||
cfd->Ref();
|
cfd->Ref();
|
||||||
mutex_.Unlock();
|
mutex_.Unlock();
|
||||||
FlushMemTable(cfd, FlushOptions());
|
FlushMemTable(cfd, FlushOptions());
|
||||||
@ -1792,7 +1793,7 @@ void DBImpl::MaybeScheduleFlushOrCompaction() {
|
|||||||
bool is_flush_pending = false;
|
bool is_flush_pending = false;
|
||||||
// no need to refcount since we're under a mutex
|
// no need to refcount since we're under a mutex
|
||||||
for (auto cfd : *versions_->GetColumnFamilySet()) {
|
for (auto cfd : *versions_->GetColumnFamilySet()) {
|
||||||
if (cfd->imm()->IsFlushPending()) {
|
if (!cfd->IsDropped() && cfd->imm()->IsFlushPending()) {
|
||||||
is_flush_pending = true;
|
is_flush_pending = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1809,7 +1810,7 @@ void DBImpl::MaybeScheduleFlushOrCompaction() {
|
|||||||
bool is_compaction_needed = false;
|
bool is_compaction_needed = false;
|
||||||
// no need to refcount since we're under a mutex
|
// no need to refcount since we're under a mutex
|
||||||
for (auto cfd : *versions_->GetColumnFamilySet()) {
|
for (auto cfd : *versions_->GetColumnFamilySet()) {
|
||||||
if (cfd->current()->NeedsCompaction()) {
|
if (!cfd->IsDropped() && cfd->current()->NeedsCompaction()) {
|
||||||
is_compaction_needed = true;
|
is_compaction_needed = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -3381,6 +3382,9 @@ Status DBImpl::Write(const WriteOptions& options, WriteBatch* my_batch) {
|
|||||||
autovector<ColumnFamilyData*> to_delete;
|
autovector<ColumnFamilyData*> to_delete;
|
||||||
// refcounting cfd in iteration
|
// refcounting cfd in iteration
|
||||||
for (auto cfd : *versions_->GetColumnFamilySet()) {
|
for (auto cfd : *versions_->GetColumnFamilySet()) {
|
||||||
|
if (cfd->IsDropped()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
cfd->Ref();
|
cfd->Ref();
|
||||||
// May temporarily unlock and wait.
|
// May temporarily unlock and wait.
|
||||||
status = MakeRoomForWrite(cfd, my_batch == nullptr);
|
status = MakeRoomForWrite(cfd, my_batch == nullptr);
|
||||||
|
Loading…
Reference in New Issue
Block a user