processor/tailsamplingprocessor/factory.go (34 lines of code) (raw):

// Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 //go:generate mdatagen metadata.yaml package tailsamplingprocessor // import "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor" import ( "context" "time" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/processor" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/metadata" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor/internal/telemetry" ) // NewFactory returns a new factory for the Tail Sampling processor. func NewFactory() processor.Factory { return processor.NewFactory( metadata.Type, createDefaultConfig, processor.WithTraces(createTracesProcessor, metadata.TracesStability)) } func createDefaultConfig() component.Config { return &Config{ DecisionWait: 30 * time.Second, NumTraces: 50000, } } func createTracesProcessor( ctx context.Context, params processor.Settings, cfg component.Config, nextConsumer consumer.Traces, ) (processor.Traces, error) { tCfg := cfg.(*Config) if telemetry.IsRecordPolicyEnabled() { tCfg.Options = append(tCfg.Options, withRecordPolicy()) } return newTracesProcessor(ctx, params, nextConsumer, *tCfg) }