From: Pieter Lexis Date: Wed, 1 Apr 2026 13:31:06 +0000 (+0200) Subject: feat(dnsdist): create pdns::trace::dnsdist::getCloserForInternalSpan function X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bba1d5da79979e11cefdfc5fa97edab6966b888e;p=thirdparty%2Fpdns.git feat(dnsdist): create pdns::trace::dnsdist::getCloserForInternalSpan function --- diff --git a/pdns/dnsdistdist/dnsdist-opentelemetry.cc b/pdns/dnsdistdist/dnsdist-opentelemetry.cc index 043a8e10cc..aae37d61a7 100644 --- a/pdns/dnsdistdist/dnsdist-opentelemetry.cc +++ b/pdns/dnsdistdist/dnsdist-opentelemetry.cc @@ -414,4 +414,15 @@ bool addTraceparentEdnsOptionToPacketBuffer([[maybe_unused]] PacketBuffer& origB #endif } +std::optional getCloserForInternalSpan([[maybe_unused]] std::shared_ptr& tracer, [[maybe_unused]] const std::string& spanName) +{ +#ifndef DISABLE_PROTOBUF + if (tracer != nullptr) { + auto ret = std::make_optional(tracer->openSpan(spanName)); + ret->setKind(SpanKind::SPAN_KIND_INTERNAL); + return ret; + } +#endif + return std::nullopt; +} } // namespace pdns::trace::dnsdist diff --git a/pdns/dnsdistdist/dnsdist-opentelemetry.hh b/pdns/dnsdistdist/dnsdist-opentelemetry.hh index 541eface47..c0245a0365 100644 --- a/pdns/dnsdistdist/dnsdist-opentelemetry.hh +++ b/pdns/dnsdistdist/dnsdist-opentelemetry.hh @@ -24,6 +24,7 @@ #include #include #include +#include #include "ednsoptions.hh" @@ -392,5 +393,13 @@ private: }; std::vector makeEDNSTraceParentOption(const std::shared_ptr& tracer); -bool addTraceparentEdnsOptionToPacketBuffer(PacketBuffer& origBuf, const std::shared_ptr& tracer, size_t qnameWireLength, size_t proxyProtocolPayloadSize, uint16_t traceparentOptionCode = EDNSOptionCode::TRACEPARENT, bool isTCP = false); +bool addTraceparentEdnsOptionToPacketBuffer(PacketBuffer& origBuf, const std::shared_ptr& tracer, const size_t qnameWireLength, const size_t proxyProtocolPayloadSize, const uint16_t traceparentOptionCode = EDNSOptionCode::TRACEPARENT, const bool isTCP = false); + +/* + * @brief Use this to *maybe* get an Internal Kind Closer in the current scope + * + * @param tracer A shared_ptr to a Tracer, if it is a nullptr, the returned closer is a nullopt + * @param spanName The name of the span + */ +std::optional getCloserForInternalSpan([[maybe_unused]] std::shared_ptr& tracer, [[maybe_unused]] const std::string& spanName); } // namespace pdns::trace::dnsdist diff --git a/pdns/dnsdistdist/dnsdist.cc b/pdns/dnsdistdist/dnsdist.cc index 382cc9869e..a3ebb7fad9 100644 --- a/pdns/dnsdistdist/dnsdist.cc +++ b/pdns/dnsdistdist/dnsdist.cc @@ -2474,18 +2474,6 @@ static void udpClientThread(std::vector states) } } -static std::optional getCloser([[maybe_unused]] std::shared_ptr& tracer, [[maybe_unused]] const std::string& spanName) -{ -#ifndef DISABLE_PROTOBUF - if (tracer != nullptr) { - auto ret = std::make_optional(tracer->openSpan(spanName)); - ret->setKind(SpanKind::SPAN_KIND_INTERNAL); - return ret; - } -#endif - return std::nullopt; -} - static void maintThread() { setThreadName("dnsdist/main"); @@ -2503,23 +2491,23 @@ static void maintThread() if (tracer != nullptr) { tracer->setScopeSpanName("dnsdist/maintenance"); } - auto maint_closer = getCloser(tracer, "maintenanceThread"); + auto maint_closer = pdns::trace::dnsdist::getCloserForInternalSpan(tracer, "maintenanceThread"); auto lua = g_lua.lock(); pdns::trace::dnsdist::runWithLuaTracing(*lua, tracer, [&lua, &tracer, &secondsToWaitLog]() { try { auto maintenanceCallback = lua->readVariable>>("maintenance"); if (maintenanceCallback) { - auto closer = getCloser(tracer, "maintenanceFunction"); + auto closer = pdns::trace::dnsdist::getCloserForInternalSpan(tracer, "maintenanceFunction"); (*maintenanceCallback)(); } { - auto closer = getCloser(tracer, "maintenanceHooks"); - dnsdist::lua::hooks::runMaintenanceHooks(*lua); + auto closer = pdns::trace::dnsdist::getCloserForInternalSpan(tracer, "maintenanceHooks"); + dnsdist::lua::hooks::runMaintenanceHooks(*lua, tracer); } #if !defined(DISABLE_DYNBLOCKS) { - auto closer = getCloser(tracer, "DynamicBlocks::runRegisteredGroups"); + auto closer = pdns::trace::dnsdist::getCloserForInternalSpan(tracer, "DynamicBlocks::runRegisteredGroups"); dnsdist::DynamicBlocks::runRegisteredGroups(*lua); } #endif /* DISABLE_DYNBLOCKS */ @@ -2537,7 +2525,7 @@ static void maintThread() counter++; if (counter >= dnsdist::configuration::getCurrentRuntimeConfiguration().d_cacheCleaningDelay) { - auto closer = getCloser(tracer, "CacheClean"); + auto closer = pdns::trace::dnsdist::getCloserForInternalSpan(tracer, "CacheClean"); /* keep track, for each cache, of whether we should keep expired entries */ std::map, bool> caches;