mirror of https://github.com/facebook/rocksdb.git
break Flush wait for dropped CF
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
This commit is contained in:
parent
c3e5ee7154
commit
1a146f89c7
|
@ -2937,6 +2937,12 @@ Status DBImpl::WaitForFlushMemTable(ColumnFamilyData* cfd) {
|
||||||
if (shutting_down_.load(std::memory_order_acquire)) {
|
if (shutting_down_.load(std::memory_order_acquire)) {
|
||||||
return Status::ShutdownInProgress();
|
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();
|
bg_cv_.Wait();
|
||||||
}
|
}
|
||||||
if (!bg_error_.ok()) {
|
if (!bg_error_.ok()) {
|
||||||
|
|
Loading…
Reference in New Issue