cli
cmd
pkg
scripts
tests
vendor
coopcloud.tech
dario.cat
git.coopcloud.tech
github.com
go.opentelemetry.io
auto
contrib
otel
attribute
baggage
codes
exporters
internal
metric
propagation
sdk
instrumentation
internal
metric
resource
trace
README.md
batch_span_processor.go
doc.go
event.go
evictedqueue.go
id_generator.go
link.go
provider.go
sampler_env.go
sampling.go
simple_span_processor.go
snapshot.go
span.go
span_exporter.go
span_limits.go
span_processor.go
tracer.go
version.go
LICENSE
README.md
version.go
semconv
trace
.codespellignore
.codespellrc
.gitattributes
.gitignore
.golangci.yml
.lycheeignore
.markdownlint.yaml
CHANGELOG.md
CODEOWNERS
CONTRIBUTING.md
LICENSE
Makefile
README.md
RELEASING.md
VERSIONING.md
dependencies.Dockerfile
doc.go
error_handler.go
get_main_pkgs.sh
handler.go
internal_logging.go
metric.go
propagation.go
renovate.json
requirements.txt
trace.go
verify_readmes.sh
verify_released_changelog.sh
version.go
versions.yaml
proto
golang.org
google.golang.org
gopkg.in
gotest.tools
modules.txt
.dockerignore
.drone.yml
.envrc.sample
.gitignore
.goreleaser.yml
AUTHORS.md
Dockerfile
LICENSE
Makefile
README.md
go.mod
go.sum
renovate.json
62 lines
2.3 KiB
Go
62 lines
2.3 KiB
Go
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package trace // import "go.opentelemetry.io/otel/sdk/trace"
|
|
|
|
import (
|
|
"context"
|
|
"sync"
|
|
)
|
|
|
|
// SpanProcessor is a processing pipeline for spans in the trace signal.
|
|
// SpanProcessors registered with a TracerProvider and are called at the start
|
|
// and end of a Span's lifecycle, and are called in the order they are
|
|
// registered.
|
|
type SpanProcessor interface {
|
|
// DO NOT CHANGE: any modification will not be backwards compatible and
|
|
// must never be done outside of a new major release.
|
|
|
|
// OnStart is called when a span is started. It is called synchronously
|
|
// and should not block.
|
|
OnStart(parent context.Context, s ReadWriteSpan)
|
|
// DO NOT CHANGE: any modification will not be backwards compatible and
|
|
// must never be done outside of a new major release.
|
|
|
|
// OnEnd is called when span is finished. It is called synchronously and
|
|
// hence not block.
|
|
OnEnd(s ReadOnlySpan)
|
|
// DO NOT CHANGE: any modification will not be backwards compatible and
|
|
// must never be done outside of a new major release.
|
|
|
|
// Shutdown is called when the SDK shuts down. Any cleanup or release of
|
|
// resources held by the processor should be done in this call.
|
|
//
|
|
// Calls to OnStart, OnEnd, or ForceFlush after this has been called
|
|
// should be ignored.
|
|
//
|
|
// All timeouts and cancellations contained in ctx must be honored, this
|
|
// should not block indefinitely.
|
|
Shutdown(ctx context.Context) error
|
|
// DO NOT CHANGE: any modification will not be backwards compatible and
|
|
// must never be done outside of a new major release.
|
|
|
|
// ForceFlush exports all ended spans to the configured Exporter that have not yet
|
|
// been exported. It should only be called when absolutely necessary, such as when
|
|
// using a FaaS provider that may suspend the process after an invocation, but before
|
|
// the Processor can export the completed spans.
|
|
ForceFlush(ctx context.Context) error
|
|
// DO NOT CHANGE: any modification will not be backwards compatible and
|
|
// must never be done outside of a new major release.
|
|
}
|
|
|
|
type spanProcessorState struct {
|
|
sp SpanProcessor
|
|
state sync.Once
|
|
}
|
|
|
|
func newSpanProcessorState(sp SpanProcessor) *spanProcessorState {
|
|
return &spanProcessorState{sp: sp}
|
|
}
|
|
|
|
type spanProcessorStates []*spanProcessorState
|