operatortrace-go/pkg/helpers/start_span.go (19 lines of code) (raw):

// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. package helpers import ( "context" "go.opentelemetry.io/otel/trace" ) func StartSpan(ctx context.Context, tracer trace.Tracer, operationName string) (context.Context, trace.Span) { span := trace.SpanFromContext(ctx) if span.SpanContext().IsValid() { spanContext := trace.NewSpanContext(trace.SpanContextConfig{ TraceID: span.SpanContext().TraceID(), SpanID: span.SpanContext().SpanID(), }) ctx = trace.ContextWithRemoteSpanContext(ctx, spanContext) ctx, span = tracer.Start(ctx, operationName) return ctx, span } // If there is no span in the context, create a new one ctx, span = tracer.Start(ctx, operationName) return ctx, span }