migration

package
v1.25.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 5, 2024 License: Apache-2.0 Imports: 2 Imported by: 1

README

OpenTracing Migration

PkgGoDev

Documentation

Overview

Package migration provides interfaces and functions that are useful for providing a cooperation of the OpenTelemetry tracers with the OpenTracing API.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SkipContextSetup

func SkipContextSetup(ctx context.Context) bool

SkipContextSetup can tell the OpenTelemetry tracer to skip the context setup during the span creation in the Start() function.

func WithDeferredSetup

func WithDeferredSetup(ctx context.Context) context.Context

WithDeferredSetup returns a context that can tell the OpenTelemetry tracer to skip the context setup in the Start() function.

Types

type DeferredContextSetupTracerExtension

type DeferredContextSetupTracerExtension interface {
	// DeferredContextSetupHook is called by the bridge
	// OpenTracing tracer when opentracing.ContextWithSpan is
	// called. This allows the OpenTelemetry tracer to set up the
	// context in a way it would normally do during the Start()
	// function. Since OpenTracing API does not support
	// configuration of the context during span creation, it needs
	// to be deferred until the call to the
	// opentracing.ContextWithSpan happens. When bridge
	// OpenTracing tracer calls OpenTelemetry tracer's Start()
	// function, it passes a context that shouldn't be modified.
	DeferredContextSetupHook(ctx context.Context, span trace.Span) context.Context
}

DeferredContextSetupTracerExtension is an interface an OpenTelemetry tracer may implement in order to cooperate with the calls to the OpenTracing API.

Tracers implementing this interface should also use the SkipContextSetup() function during creation of the span in the Start() function to skip the configuration of the context.

type OverrideTracerSpanExtension

type OverrideTracerSpanExtension interface {
	// OverrideTracer makes the span to return the passed tracer
	// from its Tracer() function.
	//
	// You don't need to implement this function if your
	// OpenTelemetry tracer cooperates well with the OpenTracing
	// API calls. In such case, there is no need to use the
	// WrapperTracer and thus no need to override the result of
	// the Tracer() function.
	OverrideTracer(tracer trace.Tracer)
}

OverrideTracerSpanExtension is an interface an OpenTelemetry span may implement in order to cooperate with the calls to the OpenTracing API.

TODO(krnowak): I'm actually not so sold on the idea… The reason for introducing this interface was to have a span "created" by the WrapperTracer return WrapperTracer from the Tracer() function, not the real OpenTelemetry tracer that actually created the span. I'm thinking that I could create a wrapperSpan type that wraps an OpenTelemetry Span object and have WrapperTracer to alter the current OpenTelemetry span in the context so it points to the wrapped object, so the code in the tracer like `trace.SpanFromContent().(*realSpan)` would still work. Another argument for getting rid of this interface is that is only called by the WrapperTracer - WrapperTracer likely shouldn't require any changes in the underlying OpenTelemetry tracer to have things somewhat working.

See the "tracer mess" test in mix_test.go.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL