]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
feat(OT): Remove `random` and `clear` functions for TraceID and SpanID
authorPieter Lexis <pieter.lexis@powerdns.com>
Tue, 7 Oct 2025 10:14:34 +0000 (12:14 +0200)
committerPieter Lexis <pieter.lexis@powerdns.com>
Tue, 14 Oct 2025 18:34:58 +0000 (20:34 +0200)
Their classes now have a `clear` and `makeRandom` function. There are
also static functions to get a random ID.

pdns/dnsdistdist/dnsdist-opentelemetry.cc
pdns/dnsdistdist/dnsdist-opentelemetry.hh
pdns/protozero-trace.cc
pdns/protozero-trace.hh
pdns/recursordist/rec-eventtrace.cc
pdns/sdig.cc

index 27b3c3df276b063f0eb52bb6e24731834be28215..0beea052799a3874b86561b368dc3b6ab2cec758 100644 (file)
@@ -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,
index 046a40b50ce4da9703114279c150a12a861fa3e8..bdb17a4d3c2e6cedeac1e896bceb1f0ddd1aa66b 100644 (file)
@@ -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
   }
index 7fdc2644a795bd6b9dcac393a0a9352fa4106562..87639aecc8cd43bb974fdce20d940b4e8e5fbac7 100644 (file)
@@ -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
index 402d2803fd0968f9768012f7f00d1462680d1794..93d6ff4c61fc2d7f008b1fd964a551ecf179df1b 100644 (file)
@@ -235,16 +235,25 @@ struct TraceID : public std::array<uint8_t, 16>
   {
     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<uint8_t, 8>
 {
@@ -253,22 +262,25 @@ struct SpanID : public std::array<uint8_t, 8>
   {
     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
index 8b1be8f529a7dae97b06475b4ce61208ac0c70ae..c16734ffa473a97a9b4fc984860bc9792f58deda 100644 (file)
@@ -110,7 +110,7 @@ std::vector<pdns::trace::Span> 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);
index 90a23e54d8542c06df6f1ee768c911dfae1ef654..0242a010fe9336973a8974aa022c27601c650d7e 100644 (file)
@@ -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);