[backupable db] Delete db_dir children when restoring backup
Summary: I realized that manifest will get deleted by PurgeObsoleteFiles in DBImpl, but it is sill cleaner to delete files before we restore the backup Test Plan: backupable_db_test Reviewers: dhruba Reviewed By: dhruba CC: leveldb Differential Revision: https://reviews.facebook.net/D14619
This commit is contained in:
parent
e9e6b00d29
commit
417b453fa6
@ -422,11 +422,18 @@ Status BackupEngine::RestoreDBFromBackup(BackupID backup_id,
|
|||||||
// delete log files that might have been already in wal_dir.
|
// delete log files that might have been already in wal_dir.
|
||||||
// This is important since they might get replayed to the restored DB,
|
// This is important since they might get replayed to the restored DB,
|
||||||
// which will then differ from the backuped DB
|
// which will then differ from the backuped DB
|
||||||
std::vector<std::string> wal_dir_children;
|
std::vector<std::string> delete_children;
|
||||||
db_env_->GetChildren(wal_dir, &wal_dir_children); // ignore errors
|
db_env_->GetChildren(wal_dir, &delete_children); // ignore errors
|
||||||
for (auto f : wal_dir_children) {
|
for (auto f : delete_children) {
|
||||||
db_env_->DeleteFile(wal_dir + "/" + f); // ignore errors
|
db_env_->DeleteFile(wal_dir + "/" + f); // ignore errors
|
||||||
}
|
}
|
||||||
|
// Also delete all the db_dir children. This is not so important
|
||||||
|
// because obsolete files will be deleted by DBImpl::PurgeObsoleteFiles()
|
||||||
|
delete_children.clear();
|
||||||
|
db_env_->GetChildren(db_dir, &delete_children); // ignore errors
|
||||||
|
for (auto f : delete_children) {
|
||||||
|
db_env_->DeleteFile(db_dir + "/" + f); // ignore errors
|
||||||
|
}
|
||||||
|
|
||||||
Status s;
|
Status s;
|
||||||
for (auto& file : backup.GetFiles()) {
|
for (auto& file : backup.GetFiles()) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user