]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Properly record cache-hits as responses
authorRemi Gacogne <remi.gacogne@powerdns.com>
Mon, 9 Jan 2023 16:15:03 +0000 (17:15 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 12 Jan 2023 11:03:24 +0000 (12:03 +0100)
For a very long time we have not been adding cache-hits to the
responses counter, which is wrong. Let's fix it now.

pdns/dnsdist.cc
pdns/dnsdistdist/docs/upgrade_guide.rst

index 9f76591b5a27a609d94fe0073f2dbf69c21988b2..91158f442fde1ca40e84dd3356536e52c4499e0f 100644 (file)
@@ -1286,6 +1286,10 @@ ProcessQueryResult processQuery(DNSQuestion& dq, ClientState& cs, LocalHolders&
             return ProcessQueryResult::Drop;
           }
 
+          ++g_stats.responses;
+          if (dq.ids.cs) {
+            ++dq.ids.cs->responses;
+          }
           return ProcessQueryResult::SendAnswer;
         }
 
@@ -1317,15 +1321,23 @@ ProcessQueryResult processQuery(DNSQuestion& dq, ClientState& cs, LocalHolders&
           return ProcessQueryResult::Drop;
         }
 
+        ++g_stats.responses;
+        if (dq.ids.cs) {
+          ++dq.ids.cs->responses;
+        }
         return ProcessQueryResult::SendAnswer;
       }
       else if (dq.ids.protocol == dnsdist::Protocol::DoH && !forwardedOverUDP) {
         /* do a second-lookup for UDP responses, but we do not want TC=1 answers */
-        if (dq.ids.packetCache->get(dq, dq.getHeader()->id, &dq.ids.cacheKeyUDP, dq.ids.subnet, dq.ids.dnssecOK, true, allowExpired, false)) {
+        if (dq.ids.packetCache->get(dq, dq.getHeader()->id, &dq.ids.cacheKeyUDP, dq.ids.subnet, dq.ids.dnssecOK, true, allowExpired, false, false, false)) {
           if (!prepareOutgoingResponse(holders, cs, dq, true)) {
             return ProcessQueryResult::Drop;
           }
 
+          ++g_stats.responses;
+          if (dq.ids.cs) {
+            ++dq.ids.cs->responses;
+          }
           return ProcessQueryResult::SendAnswer;
         }
       }
@@ -1348,6 +1360,10 @@ ProcessQueryResult processQuery(DNSQuestion& dq, ClientState& cs, LocalHolders&
         if (!prepareOutgoingResponse(holders, cs, dq, false)) {
           return ProcessQueryResult::Drop;
         }
+        ++g_stats.responses;
+        if (dq.ids.cs) {
+          ++dq.ids.cs->responses;
+        }
         // no response-only statistics counter to update.
         return ProcessQueryResult::SendAnswer;
       }
index bf5748ac491ebc800eae6b37e55b4c661d65388b..88c9630ca0ae071d0618ef50b5eba2ed62000343 100644 (file)
@@ -1,6 +1,11 @@
 Upgrade Guide
 =============
 
+1.7.x to 1.8.0
+--------------
+
+Cache-hits are now counted as responses in our metrics.
+
 1.7.0 to 1.7.1
 --------------