Summary: The cyclic dependency was: - `StressTest::OperateDb()` locks the mutex for key 'k' - `StressTest::OperateDb()` calls a function like `PauseBackgroundWork()`, which waits for pending compaction to complete. - The pending compaction reaches key `k` and `DbStressCompactionFilter::FilterV2()` calls `Lock()` on that key's mutex, which hangs forever. The cycle can be broken by using a new function, `port::Mutex::TryLock()`, which returns immediately upon failure to acquire a lock. In that case `DbStressCompactionFilter::FilterV2()` can just decide to keep the key. Pull Request resolved: https://github.com/facebook/rocksdb/pull/8956 Reviewed By: riversand963 Differential Revision: D31183718 Pulled By: ajkr fbshipit-source-id: 329e4a31ce43085af174cf367ef560b5a04399c5 |
||
---|---|---|
.. | ||
env_default.cc | ||
env_win.cc | ||
env_win.h | ||
io_win.cc | ||
io_win.h | ||
port_win.cc | ||
port_win.h | ||
win_jemalloc.cc | ||
win_logger.cc | ||
win_logger.h | ||
win_thread.cc | ||
win_thread.h | ||
xpress_win.cc | ||
xpress_win.h |