Skip to content

Commit

Permalink
Changes stdout to expose the *sdktrace.TracerProvider (#1800)
Browse files Browse the repository at this point in the history
* Changes stdout to expose the actual tracerProvider

This enables flushing and stopping the exporter.

* updated changelog

* Update CHANGELOG.md

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
  • Loading branch information
MadVikingGod and MrAlias committed Apr 14, 2021
1 parent 0489060 commit b09df84
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 8 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
- Make `ExportSpans` in Jaeger Exporter honor context deadline. (#1773)
- The `go.opentelemetry.io/otel/sdk/export/trace` package is merged into the `go.opentelemetry.io/otel/sdk/trace` package. (#1778)
- The prometheus.InstallNewPipeline example is moved from comment to example test (#1796)
- Convenience functions for stdout exporter have been updated to return the `TracerProvider` implementation and enable the shutdown of the exporter. (#1800)

### Removed

Expand Down
5 changes: 4 additions & 1 deletion exporters/stdout/example_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ func Example() {
stdout.WithPrettyPrint(),
}
// Registers both a trace and meter Provider globally.
pusher, err := stdout.InstallNewPipeline(exportOpts, nil)
tracerProvider, pusher, err := stdout.InstallNewPipeline(exportOpts, nil)
if err != nil {
log.Fatal("Could not initialize stdout exporter:", err)
}
Expand All @@ -92,4 +92,7 @@ func Example() {
if err := pusher.Stop(ctx); err != nil {
log.Fatal("Could not stop stdout exporter:", err)
}
if err := tracerProvider.Shutdown(ctx); err != nil {
log.Fatal("Could not stop stdout tracer:", err)
}
}
13 changes: 6 additions & 7 deletions exporters/stdout/exporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import (
processor "go.opentelemetry.io/otel/sdk/metric/processor/basic"
"go.opentelemetry.io/otel/sdk/metric/selector/simple"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
"go.opentelemetry.io/otel/trace"
)

type Exporter struct {
Expand All @@ -51,8 +50,8 @@ func NewExporter(options ...Option) (*Exporter, error) {

// NewExportPipeline creates a complete export pipeline with the default
// selectors, processors, and trace registration. It is the responsibility
// of the caller to stop the returned push Controller.
func NewExportPipeline(exportOpts []Option, pushOpts []controller.Option) (trace.TracerProvider, *controller.Controller, error) {
// of the caller to stop the returned tracer provider and push Controller.
func NewExportPipeline(exportOpts []Option, pushOpts []controller.Option) (*sdktrace.TracerProvider, *controller.Controller, error) {
exporter, err := NewExporter(exportOpts...)
if err != nil {
return nil, nil, err
Expand All @@ -76,7 +75,7 @@ func NewExportPipeline(exportOpts []Option, pushOpts []controller.Option) (trace

// InstallNewPipeline creates a complete export pipelines with defaults and
// registers it globally. It is the responsibility of the caller to stop the
// returned push Controller.
// returned tracer provider and push Controller.
//
// Typically this is called as:
//
Expand All @@ -86,12 +85,12 @@ func NewExportPipeline(exportOpts []Option, pushOpts []controller.Option) (trace
// }
// defer pipeline.Stop()
// ... Done
func InstallNewPipeline(exportOpts []Option, pushOpts []controller.Option) (*controller.Controller, error) {
func InstallNewPipeline(exportOpts []Option, pushOpts []controller.Option) (*sdktrace.TracerProvider, *controller.Controller, error) {
tracerProvider, controller, err := NewExportPipeline(exportOpts, pushOpts)
if err != nil {
return controller, err
return tracerProvider, controller, err
}
otel.SetTracerProvider(tracerProvider)
global.SetMeterProvider(controller.MeterProvider())
return controller, err
return tracerProvider, controller, err
}

0 comments on commit b09df84

Please sign in to comment.