diff --git a/ircd/db.cc b/ircd/db.cc index 74573e3f5..9ac886ef1 100644 --- a/ircd/db.cc +++ b/ircd/db.cc @@ -1208,7 +1208,7 @@ try } ,read_only { - ircd::read_only + slave || ircd::read_only } ,env { @@ -1281,7 +1281,9 @@ try // limit maxfdto prevent too many small files degrading read perf; too low is // bad for write perf. - opts->max_open_files = fs::support::rlimit_nofile(); + opts->max_open_files = !slave? + fs::support::rlimit_nofile(): + -1; // TODO: Check if these values can be increased; RocksDB may keep // thread_local state preventing values > 1. @@ -2410,7 +2412,10 @@ ircd::db::sequence(const rocksdb::Snapshot *const &rs) ircd::db::database::snapshot::snapshot(database &d) :s { - d.d->GetSnapshot(), + !d.slave? + d.d->GetSnapshot(): + nullptr, + [dp(weak_from(d))](const rocksdb::Snapshot *const s) { if(!s) diff --git a/matrix/dbs.cc b/matrix/dbs.cc index bc2a54287..7ba91e55c 100644 --- a/matrix/dbs.cc +++ b/matrix/dbs.cc @@ -57,7 +57,7 @@ ircd::m::dbs::sst_write_buffer_size { static const string_view key{"writable_file_max_buffer_size"}; const size_t &value{sst_write_buffer_size}; - if(events) + if(events && !events->slave) db::setopt(*events, key, lex_cast(value)); } }; diff --git a/matrix/vm.cc b/matrix/vm.cc index 2b52e2e1d..57e0d3a90 100644 --- a/matrix/vm.cc +++ b/matrix/vm.cc @@ -106,7 +106,7 @@ noexcept db::sequence(*m::dbs::events) : 0UL, }; - assert(retired == sequence::retired); + assert(retired == sequence::retired || ircd::read_only); } //