Summary:
In FlushJob we dont do the Flush if the CF is dropped
https://github.com/facebook/rocksdb/blob/master/db/flush_job.cc#L184-L188
but inside WaitForFlushMemTable we keep waiting forever even if the CF is dropped.
Closes https://github.com/facebook/rocksdb/pull/1664
Differential Revision:
D4321032
Pulled By: IslamAbdelRahman
fbshipit-source-id:
6e2b25d
if (shutting_down_.load(std::memory_order_acquire)) {
return Status::ShutdownInProgress();
}
+ if (cfd->IsDropped()) {
+ // FlushJob cannot flush a dropped CF, if we did not break here
+ // we will loop forever since cfd->imm()->NumNotFlushed() will never
+ // drop to zero
+ return Status::InvalidArgument("Cannot flush a dropped CF");
+ }
bg_cv_.Wait();
}
if (!bg_error_.ok()) {