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
main
Siying Dong 7 years ago committed by Facebook Github Bot
parent 2a81633da2
commit fd45495cf5
  1. 1
      db/db_impl.cc

@ -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;
} }

Loading…
Cancel
Save