namespace tracing {
const opentelemetry::nostd::shared_ptr<opentelemetry::trace::Tracer> Tracer::noop_tracer = opentelemetry::trace::Provider::GetTracerProvider()->GetTracer("no-op", OPENTELEMETRY_SDK_VERSION);
-const jspan Tracer::noop_span = noop_tracer->StartSpan("noop");
+const jspan_ptr Tracer::noop_span = noop_tracer->StartSpan("noop");
using bufferlist = ceph::buffer::list;
}
}
-jspan Tracer::start_trace(opentelemetry::nostd::string_view trace_name) {
+jspan_ptr Tracer::start_trace(opentelemetry::nostd::string_view trace_name) {
ceph_assert(cct);
if (is_enabled()) {
ceph_assert(tracer);
return noop_span;
}
-jspan Tracer::start_trace(opentelemetry::nostd::string_view trace_name, bool trace_is_enabled) {
+jspan_ptr Tracer::start_trace(opentelemetry::nostd::string_view trace_name, bool trace_is_enabled) {
ceph_assert(cct);
ldout(cct, 20) << "start trace enabled " << trace_is_enabled << " " << dendl;
if (trace_is_enabled) {
return noop_tracer->StartSpan(trace_name);
}
-jspan Tracer::add_span(opentelemetry::nostd::string_view span_name, const jspan& parent_span) {
+jspan_ptr Tracer::add_span(opentelemetry::nostd::string_view span_name, const jspan_ptr& parent_span) {
if (parent_span && parent_span->IsRecording()) {
ceph_assert(tracer);
opentelemetry::trace::StartSpanOptions span_opts;
return noop_span;
}
-jspan Tracer::add_span(opentelemetry::nostd::string_view span_name, const jspan_context& parent_ctx) {
+jspan_ptr Tracer::add_span(opentelemetry::nostd::string_view span_name, const jspan_context& parent_ctx) {
if (parent_ctx.IsValid()) {
ceph_assert(tracer);
opentelemetry::trace::StartSpanOptions span_opts;
#ifdef HAVE_JAEGER
#include "opentelemetry/trace/provider.h"
-using jspan = opentelemetry::nostd::shared_ptr<opentelemetry::trace::Span>;
+using jspan = opentelemetry::trace::Span;
+using jspan_ptr = opentelemetry::nostd::shared_ptr<jspan>;
using jspan_context = opentelemetry::trace::SpanContext;
using jspan_attribute = opentelemetry::common::AttributeValue;
class Tracer {
private:
const static opentelemetry::nostd::shared_ptr<opentelemetry::trace::Tracer> noop_tracer;
- const static jspan noop_span;
+ const static jspan_ptr noop_span;
CephContext* cct = nullptr;;
opentelemetry::nostd::shared_ptr<opentelemetry::trace::Tracer> tracer;
bool is_enabled() const;
// creates and returns a new span with `trace_name`
// this span represents a trace, since it has no parent.
- jspan start_trace(opentelemetry::nostd::string_view trace_name);
+ jspan_ptr start_trace(opentelemetry::nostd::string_view trace_name);
// creates and returns a new span with `trace_name`
// if false is given to `trace_is_enabled` param, noop span will be returned
- jspan start_trace(opentelemetry::nostd::string_view trace_name, bool trace_is_enabled);
+ jspan_ptr start_trace(opentelemetry::nostd::string_view trace_name, bool trace_is_enabled);
// creates and returns a new span with `span_name` which parent span is `parent_span'
- jspan add_span(opentelemetry::nostd::string_view span_name, const jspan& parent_span);
+ jspan_ptr add_span(opentelemetry::nostd::string_view span_name, const jspan_ptr& parent_span);
// creates and return a new span with `span_name`
// the span is added to the trace which it's context is `parent_ctx`.
// parent_ctx contains the required information of the trace.
- jspan add_span(opentelemetry::nostd::string_view span_name, const jspan_context& parent_ctx);
+ jspan_ptr add_span(opentelemetry::nostd::string_view span_name, const jspan_context& parent_ctx);
};
jspan_context(bool sampled_flag, bool is_remote) {}
};
-namespace opentelemetry::trace {
-struct Span {
+class jspan {
jspan_context _ctx;
+public:
template <typename T>
void SetAttribute(std::string_view key, const T& value) const noexcept {}
void AddEvent(std::string_view) {}
void UpdateName(std::string_view) {}
bool IsRecording() { return false; }
};
-}
-class jspan {
- opentelemetry::trace::Span span;
+class jspan_ptr {
+ jspan span;
public:
- opentelemetry::trace::Span& operator*() { return span; }
- const opentelemetry::trace::Span& operator*() const { return span; }
-
- opentelemetry::trace::Span* operator->() { return &span; }
- const opentelemetry::trace::Span* operator->() const { return &span; }
-
+ jspan& operator*() { return span; }
+ const jspan& operator*() const { return span; }
+ jspan* operator->() { return &span; }
+ const jspan* operator->() const { return &span; }
operator bool() const { return false; }
-
- opentelemetry::trace::Span* get() { return &span; }
- const opentelemetry::trace::Span* get() const { return &span; }
+ jspan* get() { return &span; }
+ const jspan* get() const { return &span; }
};
namespace tracing {
struct Tracer {
void init(CephContext* _cct, std::string_view service_name) {}
bool is_enabled() const { return false; }
- jspan start_trace(std::string_view, bool enabled = true) { return {}; }
- jspan add_span(std::string_view, const jspan&) { return {}; }
- jspan add_span(std::string_view span_name, const jspan_context& parent_ctx) { return {}; }
+ jspan_ptr start_trace(std::string_view, bool enabled = true) { return {}; }
+ jspan_ptr add_span(std::string_view, const jspan_ptr&) { return {}; }
+ jspan_ptr add_span(std::string_view span_name, const jspan_context& parent_ctx) { return {}; }
};
inline void encode(const jspan_context& span, bufferlist& bl, uint64_t f=0) {}