From: Pieter Lexis Date: Tue, 7 Oct 2025 10:14:34 +0000 (+0200) Subject: feat(OT): Remove `random` and `clear` functions for TraceID and SpanID X-Git-Tag: rec-5.4.0-alpha1~187^2~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=53425e3eec75b5f409c9858c02fe06f312cbd51b;p=thirdparty%2Fpdns.git feat(OT): Remove `random` and `clear` functions for TraceID and SpanID Their classes now have a `clear` and `makeRandom` function. There are also static functions to get a random ID. --- diff --git a/pdns/dnsdistdist/dnsdist-opentelemetry.cc b/pdns/dnsdistdist/dnsdist-opentelemetry.cc index 27b3c3df27..0beea05279 100644 --- a/pdns/dnsdistdist/dnsdist-opentelemetry.cc +++ b/pdns/dnsdistdist/dnsdist-opentelemetry.cc @@ -101,7 +101,7 @@ SpanID Tracer::addSpan([[maybe_unused]] const std::string& name, [[maybe_unused] #ifdef DISABLE_PROTOBUF return 0; #else - auto spanID = pdns::trace::randomSpanID(); + auto spanID = pdns::trace::SpanID::getRandomSpanID(); if (d_activated) { d_postActivationSpans.lock()->push_back({ .trace_id = d_traceid, diff --git a/pdns/dnsdistdist/dnsdist-opentelemetry.hh b/pdns/dnsdistdist/dnsdist-opentelemetry.hh index 046a40b50c..bdb17a4d3c 100644 --- a/pdns/dnsdistdist/dnsdist-opentelemetry.hh +++ b/pdns/dnsdistdist/dnsdist-opentelemetry.hh @@ -89,7 +89,7 @@ public: #ifndef DISABLE_PROTOBUF d_activated = true; if (d_traceid == pdns::trace::s_emptyTraceID) { - pdns::trace::random(d_traceid); + d_traceid.makeRandom(); } #endif } diff --git a/pdns/protozero-trace.cc b/pdns/protozero-trace.cc index 7fdc2644a7..87639aecc8 100644 --- a/pdns/protozero-trace.cc +++ b/pdns/protozero-trace.cc @@ -572,10 +572,10 @@ void extractOTraceIDs(const EDNSOptionViewMap& map, pdns::trace::InitialSpanInfo } } if (!traceidset) { - random(span.trace_id); + span.trace_id.makeRandom(); } // Empty parent span id indicated the client did not set one, thats fine - random(span.span_id); + span.span_id.makeRandom(); } std::string SpanID::toLogString() const diff --git a/pdns/protozero-trace.hh b/pdns/protozero-trace.hh index 402d2803fd..93d6ff4c61 100644 --- a/pdns/protozero-trace.hh +++ b/pdns/protozero-trace.hh @@ -235,16 +235,25 @@ struct TraceID : public std::array { return ostrm << val.toLogString(); } + + static TraceID getRandomTraceID() + { + TraceID ret; + dns_random(ret.data(), ret.size()); + return ret; + } + + void makeRandom() + { + dns_random(this->data(), this->size()); + } + + void clear() + { + this->fill(0); + } }; constexpr TraceID s_emptyTraceID = {}; -inline void random(TraceID& trace) -{ - dns_random(trace.data(), trace.size()); -} -inline void clear(TraceID& trace) -{ - trace.fill(0); -} struct SpanID : public std::array { @@ -253,22 +262,25 @@ struct SpanID : public std::array { return ostrm << val.toLogString(); } + + static SpanID getRandomSpanID() + { + SpanID ret; + dns_random(ret.data(), ret.size()); + return ret; + } + + void makeRandom() + { + dns_random(this->data(), this->size()); + } + + void clear() + { + this->fill(0); + } }; constexpr SpanID s_emptySpanID = {}; -inline void random(SpanID& span) -{ - dns_random(span.data(), span.size()); -} -inline void clear(SpanID& span) -{ - span.fill(0); -} -inline SpanID randomSpanID() -{ - SpanID ret; - random(ret); - return ret; -} inline void fill(TraceID& trace, const std::string& data) { @@ -374,9 +386,9 @@ struct InitialSpanInfo void clear() { - pdns::trace::clear(trace_id); - pdns::trace::clear(span_id); - pdns::trace::clear(parent_span_id); + trace_id.clear(); + span_id.clear(); + parent_span_id.clear(); start_time_unix_nano = 0; } }; @@ -580,10 +592,10 @@ struct Span void clear() { - pdns::trace::clear(trace_id); // 1 - pdns::trace::clear(span_id); // 2 + trace_id.clear(); // 1 + span_id.clear(); // 2 trace_state.clear(); // 3 - pdns::trace::clear(parent_span_id); // 4 + parent_span_id.clear(); // 4 name.clear(); // 5 kind = SpanKind::SPAN_KINUNSPECIFIED; // 6 start_time_unix_nano = 0; // 7 diff --git a/pdns/recursordist/rec-eventtrace.cc b/pdns/recursordist/rec-eventtrace.cc index 8b1be8f529..c16734ffa4 100644 --- a/pdns/recursordist/rec-eventtrace.cc +++ b/pdns/recursordist/rec-eventtrace.cc @@ -110,7 +110,7 @@ std::vector RecEventTrace::convertToOT(const InitialSpanInfo& work.parent_span_id = spanIDs.at(event.d_parent); } // Assign a span id. - random(work.span_id); + work.span_id.makeRandom(); addValue(event, work, true); spanIDs.emplace_back(work.span_id); ret.emplace_back(work); diff --git a/pdns/sdig.cc b/pdns/sdig.cc index 90a23e54d8..0242a010fe 100644 --- a/pdns/sdig.cc +++ b/pdns/sdig.cc @@ -370,9 +370,9 @@ try { exit(EXIT_FAILURE); } auto traceIDArg = std::string(argv[++i]); - pdns::trace::TraceID traceid{}; + pdns::trace::TraceID traceid; if (traceIDArg == "-") { - pdns::trace::random(traceid); + traceid.makeRandom(); } else { auto traceIDStr = makeBytesFromHex(traceIDArg);