Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/pkg/flow/tracing/lazy_sampler.go
4095 views
1
package tracing
2
3
import (
4
"sync"
5
6
tracesdk "go.opentelemetry.io/otel/sdk/trace"
7
)
8
9
type lazySampler struct {
10
mut sync.RWMutex
11
inner tracesdk.Sampler
12
}
13
14
var _ tracesdk.Sampler = (*lazySampler)(nil)
15
16
func (ds *lazySampler) Sampler() tracesdk.Sampler {
17
ds.mut.RLock()
18
defer ds.mut.RUnlock()
19
20
if ds.inner == nil {
21
return tracesdk.AlwaysSample()
22
}
23
return ds.inner
24
}
25
26
func (ds *lazySampler) SetSampler(s tracesdk.Sampler) {
27
ds.mut.Lock()
28
defer ds.mut.Unlock()
29
30
ds.inner = s
31
}
32
33
func (ds *lazySampler) ShouldSample(parameters tracesdk.SamplingParameters) tracesdk.SamplingResult {
34
return ds.Sampler().ShouldSample(parameters)
35
}
36
37
func (ds *lazySampler) Description() string {
38
return ds.Sampler().Description()
39
}
40
41