]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Also purge t_sstorage.ednsstatus and include edns size in the periodic report.
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Tue, 12 Nov 2019 15:42:10 +0000 (16:42 +0100)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Tue, 12 Nov 2019 15:42:10 +0000 (16:42 +0100)
pdns/pdns_recursor.cc
pdns/rec_channel_rec.cc
pdns/syncres.hh

index 0562ccb919dde1d244b04e5e4e6952168e4ad6a4..2c33ce9213eab9f8f6cd1ea619322e9b0a225cfe 100644 (file)
@@ -2845,7 +2845,8 @@ static void doStats(void)
     g_log<<Logger::Notice<<"stats: throttle map: "
       << broadcastAccFunction<uint64_t>(pleaseGetThrottleSize) <<", ns speeds: "
       << broadcastAccFunction<uint64_t>(pleaseGetNsSpeedsSize)<<", failed ns: "
-      << broadcastAccFunction<uint64_t>(pleaseGetFailedServersSize)<<endl;
+      << broadcastAccFunction<uint64_t>(pleaseGetFailedServersSize)<<", ednsmap: "
+      <<broadcastAccFunction<uint64_t>(pleaseGetEDNSStatusesSize)<<endl;
     g_log<<Logger::Notice<<"stats: outpacket/query ratio "<<(int)(SyncRes::s_outqueries*100.0/SyncRes::s_queries)<<"%";
     g_log<<Logger::Notice<<", "<<(int)(SyncRes::s_throttledqueries*100.0/(SyncRes::s_outqueries+SyncRes::s_throttledqueries))<<"% throttled, "
      <<SyncRes::s_nodelegated<<" no-delegation drops"<<endl;
@@ -2911,6 +2912,8 @@ static void houseKeeping(void *)
         SyncRes::pruneNSSpeeds(limit);
         limit = now.tv_sec - SyncRes::s_serverdownthrottletime * 10;
         SyncRes::pruneFailedServers(limit);
+        limit = now.tv_sec - 2*3600;
+        SyncRes::pruneEDNSStatuses(limit);
       }
       last_prune=time(0);
     }
index 9ff72a13ade31da39df602b36a68b8eaab895bb2..d0b7ef1d3e1e16756cfa45ecc0149fd5070386cb 100644 (file)
@@ -917,6 +917,11 @@ uint64_t* pleaseGetFailedServersSize()
   return new uint64_t(SyncRes::getFailedServersSize());
 }
 
+uint64_t* pleaseGetEDNSStatusesSize()
+{
+  return new uint64_t(SyncRes::getEDNSStatusesSize());
+}
+
 uint64_t* pleaseGetConcurrentQueries()
 {
   return new uint64_t(getMT() ? getMT()->numProcesses() : 0);
index 00220c9a70077cf773e93c03bf85102b03bed140..c400434421900870662e3dce8a0d104f08f860c8 100644 (file)
@@ -513,6 +513,16 @@ public:
   {
     t_sstorage.ednsstatus.clear();
   }
+  static void pruneEDNSStatuses(time_t cutoff)
+  {
+    for (auto it = t_sstorage.ednsstatus.begin(); it != t_sstorage.ednsstatus.end(); ) {
+      if (it->second.modeSetAt && it->second.modeSetAt <= cutoff) {
+        it = t_sstorage.ednsstatus.erase(it);
+      } else {
+        ++it;
+      }
+    }
+  }
   static uint64_t getThrottledServersSize()
   {
     return t_sstorage.throttle.size();
@@ -1083,6 +1093,7 @@ template<class T> T broadcastAccFunction(const boost::function<T*()>& func);
 std::shared_ptr<SyncRes::domainmap_t> parseAuthAndForwards();
 uint64_t* pleaseGetNsSpeedsSize();
 uint64_t* pleaseGetFailedServersSize();
+uint64_t* pleaseGetEDNSStatusesSize();
 uint64_t* pleaseGetCacheSize();
 uint64_t* pleaseGetNegCacheSize();
 uint64_t* pleaseGetCacheHits();