From a4138840dbde0ee6998371bfb1d6eba3cc4297ed Mon Sep 17 00:00:00 2001 From: Hui Kang Date: Thu, 24 Sep 2020 21:17:16 +0000 Subject: [PATCH] [WIP] Set default propagator to no-op propagator - add set propagator to examples Signed-off-by: Hui Kang Co-authored-by: Anthony Mirabella --- CHANGELOG.md | 1 + api/global/internal/state.go | 12 ++++------- api/propagation/noop_propagator.go | 34 ++++++++++++++++++++++++++++++ example/basic/main.go | 6 ++++++ example/otel-collector/main.go | 6 ++++++ 5 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 api/propagation/noop_propagator.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 74440e2f1b23..26bb05a28a76 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -70,6 +70,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm - Renamed `SamplingDecision` values to comply with OpenTelemetry specification change. (#1192) - Renamed Zipkin attribute names from `ot.status_code & ot.status_description` to `otel.status_code & otel.status_description`. (#1201) - The default SDK now invokes registered `SpanProcessor`s in the order they were registered with the `TracerProvider`. (#1195) +- The default propagator is no-op propagator. (#1184) ### Removed diff --git a/api/global/internal/state.go b/api/global/internal/state.go index ad48ff448f91..fd18ed0d67af 100644 --- a/api/global/internal/state.go +++ b/api/global/internal/state.go @@ -18,11 +18,9 @@ import ( "sync" "sync/atomic" - "go.opentelemetry.io/otel/api/baggage" "go.opentelemetry.io/otel/api/metric" "go.opentelemetry.io/otel/api/propagation" "go.opentelemetry.io/otel/api/trace" - "go.opentelemetry.io/otel/propagators" ) type ( @@ -120,14 +118,12 @@ func defaultPropagatorsValue() *atomic.Value { return v } -// getDefaultPropagators returns a default Propagators, configured -// with W3C trace and baggage propagation. +// getDefaultPropagators returns a default noop Propagators func getDefaultPropagators() propagation.Propagators { - tcPropagator := propagators.TraceContext{} - bagPropagator := baggage.Baggage{} + noopPropagator := propagation.NoopPropagator{} return propagation.New( - propagation.WithExtractors(tcPropagator, bagPropagator), - propagation.WithInjectors(tcPropagator, bagPropagator), + propagation.WithExtractors(noopPropagator), + propagation.WithInjectors(noopPropagator), ) } diff --git a/api/propagation/noop_propagator.go b/api/propagation/noop_propagator.go new file mode 100644 index 000000000000..eb5e5d7907ff --- /dev/null +++ b/api/propagation/noop_propagator.go @@ -0,0 +1,34 @@ +// Copyright The OpenTelemetry Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package propagation + +import ( + "context" +) + +type NoopPropagator struct { +} + +var _ HTTPPropagator = NoopPropagator{} + +func (p NoopPropagator) Extract(ctx context.Context, supplier HTTPSupplier) context.Context { + return ctx +} + +func (NoopPropagator) Inject(context.Context, HTTPSupplier) {} + +func (NoopPropagator) GetAllKeys() []string { + return nil +} diff --git a/example/basic/main.go b/example/basic/main.go index ab831f9efbf1..02d7edb2726f 100644 --- a/example/basic/main.go +++ b/example/basic/main.go @@ -21,6 +21,7 @@ import ( "go.opentelemetry.io/otel/api/baggage" "go.opentelemetry.io/otel/api/global" "go.opentelemetry.io/otel/api/metric" + "go.opentelemetry.io/otel/api/propagation" "go.opentelemetry.io/otel/api/trace" "go.opentelemetry.io/otel/exporters/stdout" "go.opentelemetry.io/otel/label" @@ -61,6 +62,11 @@ func main() { global.SetTracerProvider(tp) global.SetMeterProvider(pusher.MeterProvider()) + bagPropagator := baggage.DefaultHTTPPropagator() + props := propagation.New(propagation.WithExtractors(bagPropagator), + propagation.WithInjectors(bagPropagator)) + + global.SetPropagators(props) tracer := global.Tracer("ex.com/basic") meter := global.Meter("ex.com/basic") diff --git a/example/otel-collector/main.go b/example/otel-collector/main.go index 83c7c8bb22d9..20b2bccb1136 100644 --- a/example/otel-collector/main.go +++ b/example/otel-collector/main.go @@ -27,9 +27,11 @@ import ( "go.opentelemetry.io/otel/api/global" "go.opentelemetry.io/otel/api/metric" + "go.opentelemetry.io/otel/api/propagation" apitrace "go.opentelemetry.io/otel/api/trace" "go.opentelemetry.io/otel/exporters/otlp" "go.opentelemetry.io/otel/label" + "go.opentelemetry.io/otel/propagators" "go.opentelemetry.io/otel/sdk/metric/controller/push" "go.opentelemetry.io/otel/sdk/metric/processor/basic" "go.opentelemetry.io/otel/sdk/metric/selector/simple" @@ -73,6 +75,10 @@ func initProvider() func() { push.WithPeriod(2*time.Second), ) + tcPropagator := propagators.TraceContext{} + props := propagation.New(propagation.WithExtractors(tcPropagator), + propagation.WithInjectors(tcPropagator)) + global.SetPropagators(props) global.SetTracerProvider(tracerProvider) global.SetMeterProvider(pusher.MeterProvider()) pusher.Start()