diff --git a/db/version_set.cc b/db/version_set.cc index be3359563..2ace7a5be 100644 --- a/db/version_set.cc +++ b/db/version_set.cc @@ -2322,10 +2322,6 @@ Status VersionSet::LogAndApply(ColumnFamilyData* column_family_data, if (s.ok() && new_descriptor_log) { s = SetCurrentFile(env_, dbname_, pending_manifest_file_number_, db_options_->disableDataSync ? nullptr : db_directory); - // Leave the old file behind since PurgeObsoleteFiles will take care of it - // later. It's unsafe to delete now since file deletion may be disabled. - obsolete_manifests_.emplace_back( - DescriptorFileName("", manifest_file_number_)); } if (s.ok()) { @@ -2344,6 +2340,13 @@ Status VersionSet::LogAndApply(ColumnFamilyData* column_family_data, mu->Lock(); } + // Append the old mainfest file to the obsolete_manifests_ list to be deleted + // by PurgeObsoleteFiles later. + if (s.ok() && new_descriptor_log) { + obsolete_manifests_.emplace_back( + DescriptorFileName("", manifest_file_number_)); + } + // Install the new version if (s.ok()) { if (edit->is_column_family_add_) {