]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
auth lmdb: enforce shards=1 when running in lightning-stream mode
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Tue, 30 May 2023 16:50:47 +0000 (18:50 +0200)
committerPeter van Dijk <peter.van.dijk@powerdns.com>
Tue, 30 May 2023 18:59:43 +0000 (20:59 +0200)
modules/lmdbbackend/lmdbbackend.cc

index 9363543d8cc6a480f2969873917b2e5dacebbf27..56bf0327f993c7d8d88f35a44da3e92fb83be2d4 100644 (file)
@@ -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<uint32_t>();
+
+        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;
         }