diff --git a/include/xrpl/telemetry/SpanGuard.h b/include/xrpl/telemetry/SpanGuard.h index 47cd7b29cd..79d6c7659a 100644 --- a/include/xrpl/telemetry/SpanGuard.h +++ b/include/xrpl/telemetry/SpanGuard.h @@ -9,22 +9,24 @@ Dependency diagram: - +-------------------------------------------+ - | SpanGuard | - +-------------------------------------------+ - | - impl_ : unique_ptr (pimpl) | - +-------------------------------------------+ - | + span(cat, prefix, name) [static] | - | + childSpan(name) : SpanGuard | - | + linkedSpan(name) : SpanGuard | - | + captureContext() : SpanContext | - | + setAttribute(key, value) | - | + setOk() / setError(desc) | - | + addEvent(name) | - | + recordException(e) | - | + discard() | - | + operator bool() | - +-------------------------------------------+ + +------------------------------------------------+ + | SpanGuard | + +------------------------------------------------+ + | - impl_ : unique_ptr (pimpl) | + +------------------------------------------------+ + | + span(cat, prefix, name) [static] | + | + childSpan(name) : SpanGuard | + | + linkedSpan(name) : SpanGuard | + | + txSpan(prefix, name, hash) [static] | + | + txSpan(prefix, name, hash, parent) [static] | + | + captureContext() : SpanContext | + | + setAttribute(key, value) | + | + setOk() / setError(desc) | + | + addEvent(name) | + | + recordException(e) | + | + discard() | + | + operator bool() | + +------------------------------------------------+ | hides (pimpl) +-------+-------+ | | diff --git a/src/libxrpl/telemetry/SpanGuard.cpp b/src/libxrpl/telemetry/SpanGuard.cpp index 1a9e2328c2..dc73232c82 100644 --- a/src/libxrpl/telemetry/SpanGuard.cpp +++ b/src/libxrpl/telemetry/SpanGuard.cpp @@ -250,9 +250,9 @@ SpanGuard::txSpan( otel_trace::TraceId traceId(opentelemetry::nostd::span(hashData, 16)); std::uint8_t spanIdBytes[8]; - std::random_device rd; + thread_local std::mt19937 prng{std::random_device{}()}; for (auto& b : spanIdBytes) - b = static_cast(rd()); + b = static_cast(prng()); otel_trace::SpanId spanId(opentelemetry::nostd::span(spanIdBytes, 8)); otel_trace::SpanContext syntheticCtx(