DBImpl::IngestExternalFile() should grab mutex when releasing file number in failure case (#4189)

Summary:
995fcf7573 has a bug: ReleaseFileNumberFromPendingOutputs() added is not protected by the DB mutex. Fix it by grabbing the lock for this operation.
Pull Request resolved: https://github.com/facebook/rocksdb/pull/4189

Differential Revision: D9015447

Pulled By: siying

fbshipit-source-id: b8506e09a96c3f95a6fe32b5ca5fcdb9bee88937
This commit is contained in:
Siying Dong 2018-07-26 11:03:44 -07:00 committed by Yanqin Jin
parent 516faa0fa0
commit 976212ede4

View File

@ -2912,6 +2912,7 @@ Status DBImpl::IngestExternalFile(
status = ingestion_job.Prepare(external_files, super_version); status = ingestion_job.Prepare(external_files, super_version);
CleanupSuperVersion(super_version); CleanupSuperVersion(super_version);
if (!status.ok()) { if (!status.ok()) {
InstrumentedMutexLock l(&mutex_);
ReleaseFileNumberFromPendingOutputs(pending_output_elem); ReleaseFileNumberFromPendingOutputs(pending_output_elem);
return status; return status;
} }