MCPcopy
hub / github.com/grafana/dskit / StartSpanFromContext

Function StartSpanFromContext

tracing/span.go:23–47  ·  view source on GitHub ↗

StartSpanFromContext starts a new opentracing span if opentracing is registered, otherwise it starts a new otel span.

(ctx context.Context, operation string, options ...SpanOption)

Source from the content-addressed store, hash-verified

21
22// StartSpanFromContext starts a new opentracing span if opentracing is registered, otherwise it starts a new otel span.
23func StartSpanFromContext(ctx context.Context, operation string, options ...SpanOption) (*Span, context.Context) {
24 if opentracing.IsGlobalTracerRegistered() {
25 var opentracingOptions []opentracing.StartSpanOption
26 for _, opt := range options {
27 opentracingOptions = append(opentracingOptions, opt.opentracingSpanOptions()...)
28 }
29 span, ctx := opentracing.StartSpanFromContext(ctx, operation, opentracingOptions...)
30 s := &Span{opentracingSpan: span}
31 for _, opt := range options {
32 opt.apply(s)
33 }
34 return s, ctx
35 }
36
37 var otelOptions []trace.SpanStartOption
38 for _, opt := range options {
39 otelOptions = append(otelOptions, opt.otelSpanOptions()...)
40 }
41 ctx, span := tracer.Start(ctx, operation, otelOptions...)
42 s := &Span{otelSpan: span}
43 for _, opt := range options {
44 opt.apply(s)
45 }
46 return s, ctx
47}
48
49func (s *Span) SetTag(name string, value any) {
50 if s.opentracingSpan != nil {

Callers 4

CollectedRequestFunction · 0.92
TestStartSpanFromContextFunction · 0.92
TestStartSpanFromContextFunction · 0.92
TestStartSpanFromContextFunction · 0.92

Calls 4

applyMethod · 0.65
otelSpanOptionsMethod · 0.65
StartMethod · 0.65

Tested by 3

TestStartSpanFromContextFunction · 0.74
TestStartSpanFromContextFunction · 0.74
TestStartSpanFromContextFunction · 0.74