Skip to content

Commit

Permalink
Merge pull request #15147 from miodvallat/rrset_me_on_fire
Browse files Browse the repository at this point in the history
Low-hanging LMDB fruits
  • Loading branch information
miodvallat authored Feb 13, 2025
2 parents f041500 + 253139d commit 6708d17
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions modules/lmdbbackend/lmdbbackend.cc
Original file line number Diff line number Diff line change
Expand Up @@ -738,7 +738,7 @@ LMDBBackend::LMDBBackend(const std::string& suffix)
throw std::runtime_error("Somehow, we are not at schema version 5. Giving up");
}

d_tdomains = std::make_shared<tdomains_t>(getMDBEnv(getArg("filename").c_str(), MDB_NOSUBDIR | d_asyncFlag, 0600, mapSize), "domains_v5");
d_tdomains = std::make_shared<tdomains_t>(getMDBEnv(getArg("filename").c_str(), MDB_NOSUBDIR | MDB_NORDAHEAD | d_asyncFlag, 0600, mapSize), "domains_v5");
d_tmeta = std::make_shared<tmeta_t>(d_tdomains->getEnv(), "metadata_v5");
d_tkdb = std::make_shared<tkdb_t>(d_tdomains->getEnv(), "keydata_v5");
d_ttsig = std::make_shared<ttsig_t>(d_tdomains->getEnv(), "tsig_v5");
Expand Down Expand Up @@ -800,7 +800,7 @@ LMDBBackend::LMDBBackend(const std::string& suffix)
}

if (!opened) {
d_tdomains = std::make_shared<tdomains_t>(getMDBEnv(getArg("filename").c_str(), MDB_NOSUBDIR | d_asyncFlag, 0600, mapSize), "domains_v5");
d_tdomains = std::make_shared<tdomains_t>(getMDBEnv(getArg("filename").c_str(), MDB_NOSUBDIR | MDB_NORDAHEAD | d_asyncFlag, 0600, mapSize), "domains_v5");
d_tmeta = std::make_shared<tmeta_t>(d_tdomains->getEnv(), "metadata_v5");
d_tkdb = std::make_shared<tkdb_t>(d_tdomains->getEnv(), "keydata_v5");
d_ttsig = std::make_shared<ttsig_t>(d_tdomains->getEnv(), "tsig_v5");
Expand Down Expand Up @@ -1225,6 +1225,7 @@ bool LMDBBackend::replaceRRSet(uint32_t domain_id, const DNSName& qname, const Q

if (!rrset.empty()) {
vector<LMDBResourceRecord> adjustedRRSet;
adjustedRRSet.reserve(rrset.size());
for (const auto& rr : rrset) {
LMDBResourceRecord lrr(rr);
lrr.content = serializeContent(lrr.qtype.getCode(), lrr.qname, lrr.content);
Expand Down Expand Up @@ -1254,7 +1255,7 @@ std::shared_ptr<LMDBBackend::RecordsRWTransaction> LMDBBackend::getRecordsRWTran
auto& shard = d_trecords[id % s_shards];
if (!shard.env) {
shard.env = getMDBEnv((getArg("filename") + "-" + std::to_string(id % s_shards)).c_str(),
MDB_NOSUBDIR | d_asyncFlag, 0600);
MDB_NOSUBDIR | MDB_NORDAHEAD | d_asyncFlag, 0600);
shard.dbi = shard.env->openDB("records_v5", MDB_CREATE);
}
auto ret = std::make_shared<RecordsRWTransaction>(shard.env->getRWTransaction());
Expand All @@ -1271,7 +1272,7 @@ std::shared_ptr<LMDBBackend::RecordsROTransaction> LMDBBackend::getRecordsROTran
throw DBException("attempting to start nested transaction without open parent env");
}
shard.env = getMDBEnv((getArg("filename") + "-" + std::to_string(id % s_shards)).c_str(),
MDB_NOSUBDIR | d_asyncFlag, 0600);
MDB_NOSUBDIR | MDB_NORDAHEAD | d_asyncFlag, 0600);
shard.dbi = shard.env->openDB("records_v5", MDB_CREATE);
}

Expand Down Expand Up @@ -2481,6 +2482,7 @@ bool LMDBBackend::updateDNSSECOrderNameAndAuth(uint32_t domain_id, const DNSName
deserializeFromBuffer(val.get<StringView>(), lrrs);
bool changed = false;
vector<LMDBResourceRecord> newRRs;
newRRs.reserve(lrrs.size());
for (auto& lrr : lrrs) {
lrr.qtype = co.getQType(key.getNoStripHeader<StringView>());
if (!needNSEC3 && qtype != QType::ANY) {
Expand Down

0 comments on commit 6708d17

Please sign in to comment.