]> granicus.if.org Git - pdns/commitdiff
Better description for DNSSECKeeper's cache, 0 disables caching
authorRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 3 May 2016 15:39:42 +0000 (17:39 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 3 May 2016 15:39:42 +0000 (17:39 +0200)
* Fix the description of the new settings
* Setting a 0-TTL disables caching
* Only get the value once, as it's done for `max-nsec3-iterations`

docs/markdown/authoritative/settings.md
pdns/common_startup.cc
pdns/dbdnsseckeeper.cc
pdns/pdnsutil.cc

index 7c6955ae04722d544d3402221249917f05ae6190..99eead07d6f73fefcbd25bb53401b8327d6a3d3f 100644 (file)
@@ -287,11 +287,11 @@ Number of Distributor (backend) threads to start per receiver thread. See
 Synthesise CNAME records from DNAME records as required. This approximately
 doubles query load. **Do not combine with DNSSEC!**
 
-## `dns-key-cache-ttl`
+## `dnssec-key-cache-ttl`
 * Integer
 * Default: 30
 
-Seconds to store domain DNS keys in cache.
+Seconds to cache DNSSEC keys from the database. A value of 0 disables caching.
 
 ## `dnsupdate`
 * Boolean
@@ -310,7 +310,7 @@ section when sending a referral.
 * Integer
 * Default: 60
 
-Seconds to store domain metadata in cache.
+Seconds to cache domain metadata from the database. A value of 0 disables caching.
 
 ## `edns-subnet-option-number`
 * Integer
index 6a76cd671f9ee34f6fbe63e1c418d024f00616f6..ca9f6a95a45deef01edf3b28f88b69c9380dfca4 100644 (file)
@@ -149,8 +149,8 @@ void declareArguments()
   ::arg().set("soa-expire-default","Default SOA expire")="604800";
   ::arg().set("default-soa-edit","Default SOA-EDIT value")="";
   ::arg().set("default-soa-edit-signed","Default SOA-EDIT value for signed zones")="";
-  ::arg().set("dns-key-cache-ttl","Seconds to store domain DNS keys in cache")="30";
-  ::arg().set("domain-metadata-cache-ttl","Seconds to store domain metadata in cache")="60";
+  ::arg().set("dnssec-key-cache-ttl","Seconds to cache DNSSEC keys from the database")="30";
+  ::arg().set("domain-metadata-cache-ttl","Seconds to cache domain metadata from the database")="60";
 
   ::arg().set("trusted-notification-proxy", "IP address of incoming notification proxy")="";
   ::arg().set("slave-renotify", "If we should send out notifications for slaved updates")="no";
index c583367dec53e61d99290f6865978500fba792d3..a23cbd5049dadb871a5302fa9de860f834af9630 100644 (file)
@@ -183,6 +183,7 @@ bool DNSSECKeeper::activateKey(const DNSName& zname, unsigned int id)
 
 void DNSSECKeeper::getFromMeta(const DNSName& zname, const std::string& key, std::string& value)
 {
+  static int ttl = ::arg().asNum("domain-metadata-cache-ttl");
   value.clear();
   unsigned int now = time(0);
 
@@ -190,7 +191,7 @@ void DNSSECKeeper::getFromMeta(const DNSName& zname, const std::string& key, std
     cleanup();
   }
 
-  {
+  if (ttl > 0) {
     ReadLock l(&s_metacachelock); 
     
     metacache_t::const_iterator iter = s_metacache.find(tie(zname, key));
@@ -203,15 +204,17 @@ void DNSSECKeeper::getFromMeta(const DNSName& zname, const std::string& key, std
   d_keymetadb->getDomainMetadata(zname, key, meta);
   if(!meta.empty())
     value=*meta.begin();
-    
-  METACacheEntry nce;
-  nce.d_domain=zname;
-  nce.d_ttd = now + ::arg().asNum("domain-metadata-cache-ttl");
-  nce.d_key= key;
-  nce.d_value = value;
-  { 
-    WriteLock l(&s_metacachelock);
-    replacing_insert(s_metacache, nce);
+
+  if (ttl > 0) {
+    METACacheEntry nce;
+    nce.d_domain=zname;
+    nce.d_ttd = now + ttl;
+    nce.d_key= key;
+    nce.d_value = value;
+    {
+      WriteLock l(&s_metacachelock);
+      replacing_insert(s_metacache, nce);
+    }
   }
 }
 
@@ -387,13 +390,14 @@ DNSSECKeeper::keyset_t DNSSECKeeper::getEntryPoints(const DNSName& zname)
 
 DNSSECKeeper::keyset_t DNSSECKeeper::getKeys(const DNSName& zone, bool useCache)
 {
+  static int ttl = ::arg().asNum("dnssec-key-cache-ttl");
   unsigned int now = time(0);
 
   if(!((++s_ops) % 100000)) {
     cleanup();
   }
 
-  if (useCache) {
+  if (useCache && ttl > 0) {
     ReadLock l(&s_keycachelock);
     keycache_t::const_iterator iter = s_keycache.find(zone);
 
@@ -457,14 +461,17 @@ DNSSECKeeper::keyset_t DNSSECKeeper::getKeys(const DNSName& zone, bool useCache)
   }
   sort(retkeyset.begin(), retkeyset.end(), keyCompareByKindAndID);
 
-  KeyCacheEntry kce;
-  kce.d_domain=zone;
-  kce.d_keys = retkeyset;
-  kce.d_ttd = now + ::arg().asNum("dns-key-cache-ttl");
-  {
-    WriteLock l(&s_keycachelock);
-    replacing_insert(s_keycache, kce);
+  if (ttl > 0) {
+    KeyCacheEntry kce;
+    kce.d_domain=zone;
+    kce.d_keys = retkeyset;
+    kce.d_ttd = now + ttl;
+    {
+      WriteLock l(&s_keycachelock);
+      replacing_insert(s_keycache, kce);
+    }
   }
+
   return retkeyset;
 }
 
index 4fce2a46aa3f6f7f83252f7d56197967afd6c4b1..6b1b541ad0f349be9c21f658e72abf16b84f53dc 100644 (file)
@@ -120,8 +120,8 @@ void loadMainConfig(const std::string& configdir)
   ::arg().set("soa-expire-default","Default SOA expire")="604800";
   ::arg().set("soa-minimum-ttl","Default SOA minimum ttl")="3600";    
   ::arg().set("chroot","Switch to this chroot jail")="";
-  ::arg().set("dns-key-cache-ttl","Seconds to store domain DNS keys in cache")="30";
-  ::arg().set("domain-metadata-cache-ttl","Seconds to store domain metadata in cache")="60";
+  ::arg().set("dnssec-key-cache-ttl","Seconds to cache DNSSEC keys from the database")="30";
+  ::arg().set("domain-metadata-cache-ttl","Seconds to cache domain metadata from the database")="60";
 
   // Keep this line below all ::arg().set() statements
   if (! ::arg().laxFile(configname.c_str()))