]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Faster lookupEnd() for bind, geoip, ldap and lmdb backends.
authorMiod Vallat <miod.vallat@powerdns.com>
Fri, 18 Apr 2025 09:00:46 +0000 (11:00 +0200)
committerMiod Vallat <miod.vallat@powerdns.com>
Mon, 4 Aug 2025 13:17:41 +0000 (15:17 +0200)
modules/bindbackend/bindbackend2.cc
modules/bindbackend/bindbackend2.hh
modules/geoipbackend/geoipbackend.cc
modules/geoipbackend/geoipbackend.hh
modules/ldapbackend/ldapbackend.hh
modules/ldapbackend/native.cc
modules/lmdbbackend/lmdbbackend.cc
modules/lmdbbackend/lmdbbackend.hh

index c53db4b37bd8483f747bb9043c5c9b56b7870009..724653554896d5271049ef4bcfb547627c38c9e8 100644 (file)
@@ -1314,6 +1314,11 @@ bool Bind2Backend::get(DNSResourceRecord& r)
   return true;
 }
 
+void Bind2Backend::lookupEnd()
+{
+  d_handle.reset();
+}
+
 bool Bind2Backend::handle::get(DNSResourceRecord& r)
 {
   if (d_list)
index ae32f6115e50b6864cae05c5a0f3f13b2c04007a..573888798e26da472ca7f20505cd1ed5b853a97a 100644 (file)
@@ -190,6 +190,7 @@ public:
   void lookup(const QType& qtype, const DNSName& qname, domainid_t zoneId, DNSPacket* p = nullptr) override;
   bool list(const ZoneName& target, domainid_t domainId, bool include_disabled = false) override;
   bool get(DNSResourceRecord&) override;
+  void lookupEnd() override;
   void getAllDomains(vector<DomainInfo>* domains, bool getSerial, bool include_disabled = false) override;
 
   static DNSBackend* maker();
index 8f65ed25087455f1727cd15871aeb0b7c74e80cb..9a6d9cbbdc724035ef73e3084f816b2798532877 100644 (file)
@@ -619,6 +619,11 @@ bool GeoIPBackend::get(DNSResourceRecord& r)
   return true;
 }
 
+void GeoIPBackend::lookupEnd()
+{
+  d_result.clear();
+}
+
 static string queryGeoIP(const Netmask& addr, GeoIPInterface::GeoIPQueryAttribute attribute, GeoIPNetmask& gl)
 {
   string ret = "unknown";
index cd0af1f8dd1dbbb04e71f66fe28d04fc9b21faa3..57f29a808d16e94b143b67b95e21cdce003df241 100644 (file)
@@ -67,6 +67,7 @@ public:
   void lookup(const QType& qtype, const DNSName& qdomain, domainid_t zoneId, DNSPacket* pkt_p = nullptr) override;
   bool list(const ZoneName& /* target */, domainid_t /* domain_id */, bool /* include_disabled */ = false) override { return false; } // not supported
   bool get(DNSResourceRecord& r) override;
+  void lookupEnd() override;
   void reload() override;
   void rediscover(string* status = nullptr) override;
   bool getDomainInfo(const ZoneName& domain, DomainInfo& info, bool getSerial = true) override;
index e5d61ce2ccf03a95e3c0eb025ecdccc71b47fd29..68b6abd0596c4222a7e4d62c4cfb4d1ff14e7f4c 100644 (file)
@@ -114,6 +114,7 @@ public:
   bool list(const ZoneName& target, domainid_t domain_id, bool include_disabled = false) override;
   void lookup(const QType& qtype, const DNSName& qname, domainid_t zoneid, DNSPacket* dnspkt = nullptr) override;
   bool get(DNSResourceRecord& rr) override;
+  void lookupEnd() override;
 
   bool getDomainInfo(const ZoneName& domain, DomainInfo& info, bool getSerial = true) override;
 
index 2038f8e3a84e5d05a251a19adf82ed0cb26dc88c..f56496906a27b3da8b51a76ac999d6b63fbf2894 100644 (file)
@@ -380,6 +380,11 @@ bool LdapBackend::get(DNSResourceRecord& rr)
   return true;
 }
 
+void LdapBackend::lookupEnd()
+{
+  d_results_cache.clear();
+}
+
 bool LdapBackend::getDomainInfo(const ZoneName& domain, DomainInfo& info, bool /* getSerial */)
 {
   string filter;
index adf3c2623501e2b091b5e1fb4b8d39c827538ed2..a65bf8c0265b5e6df8b6a63b9f2b47b162109f56 100644 (file)
@@ -1950,6 +1950,12 @@ bool LMDBBackend::get(DNSResourceRecord& rr)
   return true;
 }
 
+void LMDBBackend::lookupEnd()
+{
+  d_getcursor.reset();
+  d_rotxn.reset();
+}
+
 bool LMDBBackend::getSerial(DomainInfo& di)
 {
   auto txn = getRecordsROTransaction(di.id);
index 4e4d1ced437377f88bd6095120271c632428a93b..95841e9d93cdeaa964d961ba20f6334ac03e5528 100644 (file)
@@ -102,6 +102,7 @@ public:
   void APILookup(const QType& type, const DNSName& qdomain, domainid_t zoneId, bool include_disabled = false) override { lookupInternal(type, qdomain, zoneId, nullptr, include_disabled); }
   bool get(DNSResourceRecord& rr) override;
   bool get(DNSZoneRecord& dzr) override;
+  void lookupEnd() override;
 
   // secondary support
   void getUnfreshSecondaryInfos(vector<DomainInfo>* domains) override;