Set dropped column family before persisting in the manifest

This commit is contained in:
Igor Canadi 2014-02-28 11:49:32 -08:00
parent 670f3ba212
commit f6a257b6a1
2 changed files with 4 additions and 3 deletions

View File

@ -3098,10 +3098,10 @@ Status DBImpl::DropColumnFamily(ColumnFamilyHandle* column_family) {
s = Status::InvalidArgument("Column family already dropped!\n");
}
if (s.ok()) {
cfd->SetDropped();
s = versions_->LogAndApply(cfd, &edit, &mutex_);
}
if (s.ok()) {
cfd->SetDropped();
// DB is holding one reference to each column family when it's alive,
// need to drop it now
if (cfd->Unref()) {

View File

@ -1489,8 +1489,9 @@ Status VersionSet::LogAndApply(ColumnFamilyData* column_family_data,
bool new_descriptor_log) {
mu->AssertHeld();
if (column_family_data->IsDropped()) {
// no need to write anything to the manifest
if (column_family_data->IsDropped() && !edit->is_column_family_drop_) {
// if column family is dropped no need to write anything to the manifest
// (unless, of course, thit is the drop column family write)
return Status::OK();
}