func StartSpan()

in operatortrace-go/pkg/helpers/start_span.go [12:27]


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
}