From: Peter van Dijk Date: Tue, 30 May 2023 16:50:47 +0000 (+0200) Subject: auth lmdb: enforce shards=1 when running in lightning-stream mode X-Git-Tag: rec-4.10.0-alpha0~19^2~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=38eb2496bacf10df57569d937f6de85b59592c4a;p=thirdparty%2Fpdns.git auth lmdb: enforce shards=1 when running in lightning-stream mode --- diff --git a/modules/lmdbbackend/lmdbbackend.cc b/modules/lmdbbackend/lmdbbackend.cc index 9363543d8c..56bf0327f9 100644 --- a/modules/lmdbbackend/lmdbbackend.cc +++ b/modules/lmdbbackend/lmdbbackend.cc @@ -673,6 +673,10 @@ LMDBBackend::LMDBBackend(const std::string& suffix) d_random_ids = true; d_handle_dups = true; LMDBLS::s_flag_deleted = true; + + if (atoi(getArg("shards").c_str()) != 1) { + throw std::runtime_error(std::string("running with Lightning Stream support requires shards=1")); + } } bool opened = false; @@ -724,6 +728,11 @@ LMDBBackend::LMDBBackend(const std::string& suffix) MDBOutVal shards; if (!txn->get(pdnsdbi, "shards", shards)) { s_shards = shards.get(); + + if (mustDo("lightning-stream") && s_shards != 1) { + throw std::runtime_error(std::string("running with Lightning Stream support enabled requires a database with exactly 1 shard")); + } + if (s_shards != atoi(getArg("shards").c_str())) { g_log << Logger::Warning << "Note: configured number of lmdb shards (" << atoi(getArg("shards").c_str()) << ") is different from on-disk (" << s_shards << "). Using on-disk shard number" << endl; }