From 02c862e4bc74f44313006144c53ebbd9ac8bb1cc Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Fri, 24 Mar 2023 19:13:50 -0700 Subject: [PATCH] ircd::db: Add define for versions w/ buggy MultiRead. --- ircd/db.cc | 2 +- ircd/db_env.cc | 6 +++++- ircd/db_has.h | 8 ++++---- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/ircd/db.cc b/ircd/db.cc index 7a17ab8d0..3198dc621 100644 --- a/ircd/db.cc +++ b/ircd/db.cc @@ -4892,7 +4892,7 @@ ircd::db::_read(const vector_view<_read_op> &op, const bool parallelize { - #ifdef IRCD_DB_HAS_MULTIGET_DIRECT + #if defined(IRCD_DB_HAS_MULTIGET_DIRECT) && defined(IRCD_DB_HAS_MULTIREAD_FIX) true && num > 1 #else false diff --git a/ircd/db_env.cc b/ircd/db_env.cc index 856dcfa7f..2ccd84083 100644 --- a/ircd/db_env.cc +++ b/ircd/db_env.cc @@ -3265,7 +3265,11 @@ catch(const std::exception &e) return error_to_status{e}; } -#ifdef IRCD_DB_HAS_ENV_MULTIREAD +#if defined(IRCD_DB_HAS_ENV_MULTIREAD) && !defined(IRCD_DB_HAS_MULTIREAD_FIX) +#warning "RocksDB MultiRead is buggy in this version. Please upgrade to 6.12.6+" +#endif + +#if defined(IRCD_DB_HAS_ENV_MULTIREAD) rocksdb::Status ircd::db::database::env::random_access_file::MultiRead(rocksdb::ReadRequest *const req, size_t num) diff --git a/ircd/db_has.h b/ircd/db_has.h index d97edd7e2..a11826fbc 100644 --- a/ircd/db_has.h +++ b/ircd/db_has.h @@ -94,13 +94,13 @@ #if ROCKSDB_MAJOR > 6 \ || (ROCKSDB_MAJOR == 6 && ROCKSDB_MINOR > 12) \ || (ROCKSDB_MAJOR == 6 && ROCKSDB_MINOR == 12 && ROCKSDB_PATCH >= 6) - #define IRCD_DB_HAS_MANIFEST_WRITE + #define IRCD_DB_HAS_MULTIREAD_FIX #endif #if ROCKSDB_MAJOR > 6 \ -|| (ROCKSDB_MAJOR == 6 && ROCKSDB_MINOR > 14) \ -|| (ROCKSDB_MAJOR == 6 && ROCKSDB_MINOR == 14 && ROCKSDB_PATCH >= 5) - #define IRCD_DB_HAS_FLUSH_RETRY +|| (ROCKSDB_MAJOR == 6 && ROCKSDB_MINOR > 12) \ +|| (ROCKSDB_MAJOR == 6 && ROCKSDB_MINOR == 12 && ROCKSDB_PATCH >= 6) + #define IRCD_DB_HAS_MANIFEST_WRITE #endif #if ROCKSDB_MAJOR > 6 \