From: Miod Vallat Date: Mon, 29 Sep 2025 12:22:50 +0000 (+0200) Subject: Invoke Namingway and change a bunch of data structure names. NFCI X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d0810013a5ab9d2e315b972a9e0d6cb38a79b0dc;p=thirdparty%2Fpdns.git Invoke Namingway and change a bunch of data structure names. NFCI This will make them look less awkward in the near future. Signed-off-by: Miod Vallat (cherry picked from commit 416166997339ddc9431d5524328c54830244e36f) --- diff --git a/modules/lmdbbackend/lmdbbackend.cc b/modules/lmdbbackend/lmdbbackend.cc index 62aa28b6a..5e945ab76 100644 --- a/modules/lmdbbackend/lmdbbackend.cc +++ b/modules/lmdbbackend/lmdbbackend.cc @@ -646,28 +646,32 @@ bool LMDBBackend::upgradeToSchemav5(std::string& filename) } // Serial number cache -bool LMDBBackend::SerialCache::get(uint32_t domainid, uint32_t& serial) const + +// Retrieve the transient domain info for the given domain, if any +bool LMDBBackend::TransientDomainInfoCache::get(uint32_t domainid, TransientDomainInfo& data) const { - if (auto iter = d_serials.find(domainid); iter != d_serials.end()) { - serial = iter->second; + if (auto iter = d_data.find(domainid); iter != d_data.end()) { + data = iter->second; return true; } return false; } -void LMDBBackend::SerialCache::remove(uint32_t domainid) +// Remove the transient domain info for the given domain +void LMDBBackend::TransientDomainInfoCache::remove(uint32_t domainid) { - if (auto iter = d_serials.find(domainid); iter != d_serials.end()) { - d_serials.erase(iter); + if (auto iter = d_data.find(domainid); iter != d_data.end()) { + d_data.erase(iter); } } -void LMDBBackend::SerialCache::update(uint32_t domainid, uint32_t serial) +// Create or update the transient domain info for the given domain +void LMDBBackend::TransientDomainInfoCache::update(uint32_t domainid, const TransientDomainInfo& data) { - d_serials.insert_or_assign(domainid, serial); + d_data.insert_or_assign(domainid, data); } -SharedLockGuarded LMDBBackend::s_notified_serial; +SharedLockGuarded LMDBBackend::s_transient_domain_info; LMDBBackend::LMDBBackend(const std::string& suffix) { @@ -1053,20 +1057,22 @@ void LMDBBackend::consolidateDomainInfo(DomainInfo& info) const { // Update the notified_serial value if we have a cached value in memory. if (!d_write_notification_update) { - auto container = s_notified_serial.read_lock(); - container->get(info.id, info.notified_serial); + auto container = s_transient_domain_info.read_lock(); + TransientDomainInfo tdi; + container->get(info.id, tdi); + info.notified_serial = tdi.notified_serial; } } void LMDBBackend::writeDomainInfo(const DomainInfo& info) { if (!d_write_notification_update) { - uint32_t last_notified_serial{0}; - auto container = s_notified_serial.write_lock(); - container->get(info.id, last_notified_serial); + auto container = s_transient_domain_info.write_lock(); + TransientDomainInfo tdi; + container->get(info.id, tdi); // Only remove the in-memory value if it has not been modified since the // DomainInfo data was set up. - if (last_notified_serial == info.notified_serial) { + if (tdi.notified_serial == info.notified_serial) { container->remove(info.id); } } @@ -1445,7 +1451,7 @@ bool LMDBBackend::deleteDomain(const DNSName& domain) // Remove zone { - auto container = s_notified_serial.write_lock(); + auto container = s_transient_domain_info.write_lock(); container->remove(static_cast(id)); } auto txn = d_tdomains->getRWTransaction(); @@ -1892,8 +1898,12 @@ void LMDBBackend::setNotified(uint32_t domain_id, uint32_t serial) DomainInfo info; if (findDomain(domain_id, info)) { - auto container = s_notified_serial.write_lock(); - container->update(info.id, serial); + auto container = s_transient_domain_info.write_lock(); + TransientDomainInfo tdi; + // will need container->get(info.id, tdi); once TransientDomainInfo grows + // more fields. + tdi.notified_serial = serial; + container->update(info.id, tdi); } } diff --git a/modules/lmdbbackend/lmdbbackend.hh b/modules/lmdbbackend/lmdbbackend.hh index c7d6c1158..4a0fcbd2d 100644 --- a/modules/lmdbbackend/lmdbbackend.hh +++ b/modules/lmdbbackend/lmdbbackend.hh @@ -326,18 +326,24 @@ private: std::string d_matchkey; DNSName d_lookupdomain; + // Transient DomainInfo data, not necessarily synchronized with the + // database. + struct TransientDomainInfo + { + uint32_t notified_serial{}; + }; // Cache of DomainInfo notified_serial values - class SerialCache : public boost::noncopyable + class TransientDomainInfoCache : public boost::noncopyable { public: - bool get(uint32_t domainid, uint32_t& serial) const; + bool get(uint32_t domainid, TransientDomainInfo& data) const; void remove(uint32_t domainid); - void update(uint32_t domainid, uint32_t serial); + void update(uint32_t domainid, const TransientDomainInfo& data); private: - std::unordered_map d_serials; + std::unordered_map d_data; }; - static SharedLockGuarded s_notified_serial; + static SharedLockGuarded s_transient_domain_info; vector d_currentrrset; size_t d_currentrrsetpos;