mirror of
https://github.com/facebook/rocksdb.git
synced 2024-11-30 04:41:49 +00:00
DeleteFile should schedule Flush or Compaction
Summary: More info here: https://github.com/facebook/rocksdb/issues/89 If flush fails because of ENOSPC, we have a deadlock problem. This is a quick fix that will continue the normal operation when user deletes the file and frees up the space on the device. We need to address the issue more broadly with bg_error_ cleanup. Test Plan: make check Reviewers: dhruba, haobo, ljin Reviewed By: ljin CC: leveldb Differential Revision: https://reviews.facebook.net/D16275
This commit is contained in:
parent
2bf1151a25
commit
6ed450a58c
|
@ -3623,6 +3623,12 @@ Status DBImpl::DeleteFile(std::string name) {
|
||||||
LogFlush(options_.info_log);
|
LogFlush(options_.info_log);
|
||||||
// remove files outside the db-lock
|
// remove files outside the db-lock
|
||||||
PurgeObsoleteFiles(deletion_state);
|
PurgeObsoleteFiles(deletion_state);
|
||||||
|
{
|
||||||
|
MutexLock l(&mutex_);
|
||||||
|
// schedule flush if file deletion means we freed the space for flushes to
|
||||||
|
// continue
|
||||||
|
MaybeScheduleFlushOrCompaction();
|
||||||
|
}
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue