mirror of https://github.com/facebook/rocksdb.git
Prevent db_stress failure when io_uring is disabled (#11045)
Summary: The IO uring usage is disabled in RocksDB by default and, as a result, PosixRandomAccessFile::ReadAsync returns a NotSupported() status. This was causing stress test failures with MultiGet and async_io combination. Fix it by relying on redirection of ReadAsync to Read when default Env is used in db_stress. Pull Request resolved: https://github.com/facebook/rocksdb/pull/11045 Reviewed By: akankshamahajan15 Differential Revision: D42136213 Pulled By: anand1976 fbshipit-source-id: fc7904d8ece74d7e8f2e1a34c3d70bd5774fb45f
This commit is contained in:
parent
c3f720c60d
commit
692d6be358
|
@ -29,8 +29,7 @@
|
|||
namespace ROCKSDB_NAMESPACE {
|
||||
namespace {
|
||||
static std::shared_ptr<ROCKSDB_NAMESPACE::Env> env_guard;
|
||||
static std::shared_ptr<ROCKSDB_NAMESPACE::CompositeEnvWrapper>
|
||||
env_wrapper_guard;
|
||||
static std::shared_ptr<ROCKSDB_NAMESPACE::Env> env_wrapper_guard;
|
||||
static std::shared_ptr<ROCKSDB_NAMESPACE::CompositeEnvWrapper>
|
||||
dbsl_env_wrapper_guard;
|
||||
static std::shared_ptr<CompositeEnvWrapper> fault_env_guard;
|
||||
|
@ -99,6 +98,13 @@ int db_stress_tool(int argc, char** argv) {
|
|||
|
||||
env_wrapper_guard = std::make_shared<CompositeEnvWrapper>(
|
||||
raw_env, std::make_shared<DbStressFSWrapper>(raw_env->GetFileSystem()));
|
||||
if (!env_opts) {
|
||||
// If using the default Env (Posix), wrap DbStressEnvWrapper with the
|
||||
// legacy EnvWrapper. This is a temporary fix for the ReadAsync interface
|
||||
// not being properly supported with Posix and db_stress. The EnvWrapper
|
||||
// has a default implementation of ReadAsync that redirects to Read.
|
||||
env_wrapper_guard = std::make_shared<EnvWrapper>(env_wrapper_guard);
|
||||
}
|
||||
db_stress_env = env_wrapper_guard.get();
|
||||
|
||||
FLAGS_rep_factory = StringToRepFactory(FLAGS_memtablerep.c_str());
|
||||
|
|
Loading…
Reference in New Issue