Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion example/basic/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,11 @@ import (
"go.opentelemetry.io/api/key"
"go.opentelemetry.io/api/metric"
"go.opentelemetry.io/api/trace"
"go.opentelemetry.io/global"
)

var (
tracer = trace.GlobalProvider().GetTracer("ex.com/basic")
tracer = global.TraceProvider().GetTracer("ex.com/basic")

meter = metric.GlobalMeter() // TODO: should share resources ^^^?

Expand Down
5 changes: 3 additions & 2 deletions example/http-stackdriver/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import (
"go.opentelemetry.io/api/key"
"go.opentelemetry.io/api/trace"
"go.opentelemetry.io/exporter/trace/stackdriver"
"go.opentelemetry.io/global"
"go.opentelemetry.io/plugin/httptrace"
sdktrace "go.opentelemetry.io/sdk/trace"
)
Expand All @@ -53,12 +54,12 @@ func initTracer() {
if err != nil {
log.Fatal(err)
}
trace.SetGlobalProvider(tp)
global.SetTraceProvider(tp)
}

func main() {
initTracer()
tr := trace.GlobalProvider().GetTracer("stackdriver/example/client")
tr := global.TraceProvider().GetTracer("stackdriver/example/client")

client := http.DefaultClient
ctx := distributedcontext.NewContext(context.Background(),
Expand Down
5 changes: 3 additions & 2 deletions example/http-stackdriver/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (
"go.opentelemetry.io/api/distributedcontext"
"go.opentelemetry.io/api/trace"
"go.opentelemetry.io/exporter/trace/stackdriver"
"go.opentelemetry.io/global"
"go.opentelemetry.io/plugin/httptrace"
sdktrace "go.opentelemetry.io/sdk/trace"
)
Expand All @@ -46,13 +47,13 @@ func initTracer() {
if err != nil {
log.Fatal(err)
}
trace.SetGlobalProvider(tp)
global.SetTraceProvider(tp)
}

func main() {
initTracer()

tr := trace.GlobalProvider().GetTracer("stackdriver/example/server")
tr := global.TraceProvider().GetTracer("stackdriver/example/server")

helloHandler := func(w http.ResponseWriter, req *http.Request) {
attrs, entries, spanCtx := httptrace.Extract(req.Context(), req)
Expand Down
5 changes: 3 additions & 2 deletions example/http/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import (
"go.opentelemetry.io/api/key"
"go.opentelemetry.io/api/trace"
"go.opentelemetry.io/exporter/trace/stdout"
"go.opentelemetry.io/global"
"go.opentelemetry.io/plugin/httptrace"
sdktrace "go.opentelemetry.io/sdk/trace"
)
Expand All @@ -49,7 +50,7 @@ func initTracer() {
if err != nil {
log.Fatal(err)
}
trace.SetGlobalProvider(tp)
global.SetTraceProvider(tp)
}

func main() {
Expand All @@ -62,7 +63,7 @@ func main() {

var body []byte

tr := trace.GlobalProvider().GetTracer("example/client")
tr := global.TraceProvider().GetTracer("example/client")
err := tr.WithSpan(ctx, "say hello",
func(ctx context.Context) error {
req, _ := http.NewRequest("GET", "http://localhost:7777/hello", nil)
Expand Down
5 changes: 3 additions & 2 deletions example/http/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"go.opentelemetry.io/api/distributedcontext"
"go.opentelemetry.io/api/trace"
"go.opentelemetry.io/exporter/trace/stdout"
"go.opentelemetry.io/global"
"go.opentelemetry.io/plugin/httptrace"
sdktrace "go.opentelemetry.io/sdk/trace"
)
Expand All @@ -42,12 +43,12 @@ func initTracer() {
if err != nil {
log.Fatal(err)
}
trace.SetGlobalProvider(tp)
global.SetTraceProvider(tp)
}

func main() {
initTracer()
tr := trace.GlobalProvider().GetTracer("example/server")
tr := global.TraceProvider().GetTracer("example/server")

helloHandler := func(w http.ResponseWriter, req *http.Request) {
attrs, entries, spanCtx := httptrace.Extract(req.Context(), req)
Expand Down
3 changes: 2 additions & 1 deletion example/namedtracer/foo/foo.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (

"go.opentelemetry.io/api/key"
"go.opentelemetry.io/api/trace"
"go.opentelemetry.io/global"
)

var (
Expand All @@ -31,7 +32,7 @@ func SubOperation(ctx context.Context) error {

// Using global provider. Alternative is to have application provide a getter
// for its component to get the instance of the provider.
tr := trace.GlobalProvider().GetTracer("example/namedtracer/foo")
tr := global.TraceProvider().GetTracer("example/namedtracer/foo")
return tr.WithSpan(
ctx,
"Sub operation...",
Expand Down
3 changes: 2 additions & 1 deletion example/namedtracer/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (
"go.opentelemetry.io/api/trace"
"go.opentelemetry.io/example/namedtracer/foo"
"go.opentelemetry.io/exporter/trace/stdout"
"go.opentelemetry.io/global"
sdktrace "go.opentelemetry.io/sdk/trace"
)

Expand All @@ -47,7 +48,7 @@ func initTracer() {
if err != nil {
log.Panicf("failed to initialize trace provider %v\n", err)
}
trace.SetGlobalProvider(tp)
global.SetTraceProvider(tp)
}

func main() {
Expand Down
9 changes: 5 additions & 4 deletions experimental/bridge/opentracing/mix_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (

otelcore "go.opentelemetry.io/api/core"
oteltrace "go.opentelemetry.io/api/trace"
"go.opentelemetry.io/global"

"go.opentelemetry.io/experimental/bridge/opentracing/internal"
)
Expand Down Expand Up @@ -118,7 +119,7 @@ func TestMixedAPIs(t *testing.T) {
})
ctx := context.Background()

oteltrace.SetGlobalProvider(otelProvider)
global.SetTraceProvider(otelProvider)
ot.SetGlobalTracer(otTracer)

tc.setup(t, mockOtelTracer)
Expand Down Expand Up @@ -424,7 +425,7 @@ func (tm *tracerMessTest) setup(t *testing.T, tracer *internal.MockTracer) {

func (tm *tracerMessTest) check(t *testing.T, tracer *internal.MockTracer) {
globalOtTracer := ot.GlobalTracer()
globalOtelTracer := oteltrace.GlobalProvider().GetTracer("")
globalOtelTracer := global.TraceProvider().GetTracer("")
if len(tm.recordedOTSpanTracers) != 3 {
t.Errorf("Expected 3 recorded OpenTracing tracers from spans, got %d", len(tm.recordedOTSpanTracers))
}
Expand Down Expand Up @@ -543,7 +544,7 @@ func min(a, b int) int {
}

func runOtelOTOtel(t *testing.T, ctx context.Context, name string, callback func(*testing.T, context.Context)) {
tr := oteltrace.GlobalProvider().GetTracer("")
tr := global.TraceProvider().GetTracer("")
ctx, span := tr.Start(ctx, fmt.Sprintf("%s_Otel_OTOtel", name), oteltrace.WithSpanKind(oteltrace.SpanKindClient))
defer span.End()
callback(t, ctx)
Expand All @@ -560,7 +561,7 @@ func runOtelOTOtel(t *testing.T, ctx context.Context, name string, callback func
}

func runOTOtelOT(t *testing.T, ctx context.Context, name string, callback func(*testing.T, context.Context)) {
tr := oteltrace.GlobalProvider().GetTracer("")
tr := global.TraceProvider().GetTracer("")
span, ctx := ot.StartSpanFromContext(ctx, fmt.Sprintf("%s_OT_OtelOT", name), ot.Tag{Key: "span.kind", Value: "client"})
defer span.Finish()
callback(t, ctx)
Expand Down
9 changes: 4 additions & 5 deletions exporter/trace/jaeger/example/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ import (
"go.opentelemetry.io/api/core"
"go.opentelemetry.io/api/key"

apitrace "go.opentelemetry.io/api/trace"
"go.opentelemetry.io/exporter/trace/jaeger"
"go.opentelemetry.io/global"
sdktrace "go.opentelemetry.io/sdk/trace"
)

Expand All @@ -45,7 +45,6 @@ func initTracer() func() {
if err != nil {
log.Fatal(err)
}
exporter.RegisterSimpleSpanProcessor()

// For demoing purposes, always sample. In a production application, you should
// configure this to a trace.ProbabilitySampler set at the desired
Expand All @@ -56,7 +55,7 @@ func initTracer() func() {
if err != nil {
log.Fatal(err)
}
apitrace.SetGlobalProvider(tp)
global.SetTraceProvider(tp)
return func() {
exporter.Flush()
}
Expand All @@ -68,14 +67,14 @@ func main() {

ctx := context.Background()

tr := apitrace.GlobalProvider().GetTracer("component-main")
tr := global.TraceProvider().GetTracer("component-main")
ctx, span := tr.Start(ctx, "/foo")
bar(ctx)
span.End()
}

func bar(ctx context.Context) {
tr := apitrace.GlobalProvider().GetTracer("component-bar")
tr := global.TraceProvider().GetTracer("component-bar")
_, span := tr.Start(ctx, "/bar")
defer span.End()

Expand Down
26 changes: 15 additions & 11 deletions api/trace/global.go → global/global.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,28 +12,32 @@
// See the License for the specific language governing permissions and
// limitations under the License.

package trace
package global

import "sync/atomic"
import (
"sync/atomic"

"go.opentelemetry.io/api/trace"
)

type globalProvider struct {
p Provider
p trace.Provider
}

var globalP atomic.Value

// GlobalProvider returns trace provider registered with global registry.
// If no trace provider is registered then an instance of NoopTraceProvider is returned.
// TraceProvider returns registered global trace provider.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// TraceProvider returns registered global trace provider.
// TraceProvider returns the registered global trace provider.

or

Suggested change
// TraceProvider returns registered global trace provider.
// TraceProvider returns the configured global trace provider.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done.

// If none is registered then an instance of NoopTraceProvider is returned.
// Use the trace provider to create a named tracer. E.g.
// tracer := trace.GlobalProvider().GetTracer("example.com/foo")
func GlobalProvider() Provider {
// tracer := global.TraceProvider().GetTracer("example.com/foo")
func TraceProvider() trace.Provider {
if gp := globalP.Load(); gp != nil {
return gp.(globalProvider).p
}
return NoopTraceProvider{}
return trace.NoopTraceProvider{}
}

// SetGlobalProvider sets the provider as a global trace provider.
func SetGlobalProvider(m Provider) {
globalP.Store(globalProvider{p: m})
// SetTraceProvider configures the provider as a global trace provider.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// SetTraceProvider configures the provider as a global trace provider.
// SetTraceProvider registers p as the global trace provider.

or

Suggested change
// SetTraceProvider configures the provider as a global trace provider.
// SetTraceProvider configures p to be the global trace provider.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done.

func SetTraceProvider(p trace.Provider) {
globalP.Store(globalProvider{p: p})
}
9 changes: 5 additions & 4 deletions api/trace/global_test.go → global/global_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,13 @@
// See the License for the specific language governing permissions and
// limitations under the License.

package trace_test
package global_test

import (
"testing"

"go.opentelemetry.io/api/trace"
"go.opentelemetry.io/global"
)

type TestProvider1 struct {
Expand All @@ -33,10 +34,10 @@ func TestMulitpleGlobalProvider(t *testing.T) {

p1 := TestProvider1{}
p2 := trace.NoopTraceProvider{}
trace.SetGlobalProvider(&p1)
trace.SetGlobalProvider(&p2)
global.SetTraceProvider(&p1)
global.SetTraceProvider(&p2)

got := trace.GlobalProvider()
got := global.TraceProvider()
want := &p2
if got != want {
t.Fatalf("Provider: got %p, want %p\n", got, want)
Expand Down
3 changes: 2 additions & 1 deletion plugin/httptrace/clienttrace.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import (
"go.opentelemetry.io/api/core"
"go.opentelemetry.io/api/key"
"go.opentelemetry.io/api/trace"
"go.opentelemetry.io/global"
)

var (
Expand All @@ -54,7 +55,7 @@ func newClientTracer(ctx context.Context) *clientTracer {
Context: ctx,
levels: make(map[string]trace.Span),
}
ct.tr = trace.GlobalProvider().GetTracer("go.opentelemetry.io/plugin/httptrace")
ct.tr = global.TraceProvider().GetTracer("go.opentelemetry.io/plugin/httptrace")
ct.open("http.request")
return ct
}
Expand Down
3 changes: 2 additions & 1 deletion plugin/othttp/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
"go.opentelemetry.io/api/core"
"go.opentelemetry.io/api/propagation"
"go.opentelemetry.io/api/trace"
"go.opentelemetry.io/global"
prop "go.opentelemetry.io/propagation"
)

Expand Down Expand Up @@ -129,7 +130,7 @@ func WithMessageEvents(events ...event) Option {
func NewHandler(handler http.Handler, operation string, opts ...Option) http.Handler {
h := Handler{handler: handler, operation: operation}
defaultOpts := []Option{
WithTracer(trace.GlobalProvider().GetTracer("go.opentelemtry.io/plugin/othttp")),
WithTracer(global.TraceProvider().GetTracer("go.opentelemtry.io/plugin/othttp")),
WithPropagator(prop.HTTPTraceContextPropagator{}),
WithSpanOptions(trace.WithSpanKind(trace.SpanKindServer)),
}
Expand Down
3 changes: 2 additions & 1 deletion plugin/othttp/handler_example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
"go.opentelemetry.io/api/core"
"go.opentelemetry.io/api/trace"
"go.opentelemetry.io/exporter/trace/stdout"
"go.opentelemetry.io/global"
"go.opentelemetry.io/plugin/othttp"
sdktrace "go.opentelemetry.io/sdk/trace"
)
Expand Down Expand Up @@ -55,7 +56,7 @@ func ExampleNewHandler() {
if err != nil {
log.Fatal(err)
}
trace.SetGlobalProvider(tp)
global.SetTraceProvider(tp)

figureOutName := func(ctx context.Context, s string) (string, error) {
pp := strings.SplitN(s, "/", 2)
Expand Down