Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Set Options File Number for CompactionInput under Mutex Lock (#13394)
Summary: Options File Number to be read by remote worker is part of the `CompactionServiceInput`. We've been setting this in `ProcessKeyValueCompactionWithCompactionService()` while the db_mutex is not held. This needs to be accessed while the mutex is held. The value can change as part of `SetOptions() -> RenameTempFileToOptionsFile()` as in following. https://github.com/facebook/rocksdb/blob/e6972196bca115e841a6b88d361ba945b49e1e5d/db/db_impl/db_impl.cc#L5595-L5596 Keep this value in memory during `CompactionJob::Prepare()` which is called while the mutex is held, so that we can easily access this later without mutex when building the CompactionInput for the remote compaction. Thanks to the crash test. This was surfaced after #13378 merged. Pull Request resolved: #13394 Test Plan: Unit Test ``` ./compaction_service_test ``` Crash Test ``` COERCE_CONTEXT_SWITCH=1 COMPILE_WITH_TSAN=1 CC=clang-13 CXX=clang++-13 ROCKSDB_DISABLE_ALIGNED_NEW=1 USE_CLANG=1 make V=1 -j100 dbg ``` ``` python3 -u tools/db_crashtest.py blackbox --enable_remote_compaction=1 ``` Reviewed By: jowlyzhang Differential Revision: D69496313 Pulled By: jaykorean fbshipit-source-id: 7e38e3cb75d5a7708beb4883e1a138e2b09ff837
- Loading branch information