Files
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
2024-08-04 11:06:58 +02:00

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