Skip to content

Commit 786ff0f

Browse files
committed
Rever public API changes in open-telemetry#10931, preserve logic
Signed-off-by: Bogdan Drutu <[email protected]>
1 parent 3fe42eb commit 786ff0f

File tree

27 files changed

+255
-147
lines changed

27 files changed

+255
-147
lines changed

.chloggen/revert-10931.yaml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Use this changelog template to create an entry for release notes.
2+
3+
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
4+
change_type: deprecation
5+
6+
# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
7+
component: component
8+
9+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
10+
note: Deprecate `TelemetrySettings.LeveledMeterProvider`
11+
12+
# One or more tracking issues or pull requests related to the change
13+
issues: [11061]
14+
15+
# (Optional) One or more lines of additional information to render under the primary note.
16+
# These lines will be padded with 2 spaces and then inserted directly into the document.
17+
# Use pipe (|) for multiline entries.
18+
subtext:
19+
20+
# Optional: The change log or logs in which this entry should be included.
21+
# e.g. '[user]' or '[user, api]'
22+
# Include 'user' if the change is relevant to end users.
23+
# Include 'api' if there is a change to a library API.
24+
# Default: '[user]'
25+
change_logs: [api]

cmd/mdatagen/internal/command_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -604,11 +604,11 @@ import (
604604
"go.opentelemetry.io/collector/config/configtelemetry"
605605
)
606606
607-
// Deprecated: [v0.108.0] use LeveledMeter instead.
608607
func Meter(settings component.TelemetrySettings) metric.Meter {
609608
return settings.MeterProvider.Meter("")
610609
}
611610
611+
// Deprecated: [v0.114.0] use Meter instead.
612612
func LeveledMeter(settings component.TelemetrySettings, level configtelemetry.Level) metric.Meter {
613613
return settings.LeveledMeterProvider(level).Meter("")
614614
}
@@ -642,11 +642,11 @@ import (
642642
"go.opentelemetry.io/collector/config/configtelemetry"
643643
)
644644
645-
// Deprecated: [v0.108.0] use LeveledMeter instead.
646645
func Meter(settings component.TelemetrySettings) metric.Meter {
647646
return settings.MeterProvider.Meter("")
648647
}
649648
649+
// Deprecated: [v0.114.0] use Meter instead.
650650
func LeveledMeter(settings component.TelemetrySettings, level configtelemetry.Level) metric.Meter {
651651
return settings.LeveledMeterProvider(level).Meter("")
652652
}

cmd/mdatagen/internal/samplereceiver/generated_component_telemetry_test.go

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/mdatagen/internal/samplereceiver/internal/metadata/generated_telemetry.go

Lines changed: 17 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/mdatagen/internal/templates/component_telemetry_test.go.tmpl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,16 @@ type componentTestTelemetry struct {
3131
{{- if or isConnector isExporter isExtension isProcessor isReceiver }}
3232
func (tt *componentTestTelemetry) NewSettings() {{ .Status.Class }}.Settings {
3333
set := {{ .Status.Class }}test.NewNopSettings()
34-
set.TelemetrySettings = tt.newTelemetrySettings()
3534
set.ID = component.NewID(component.MustNewType("{{ .Type }}"))
35+
set.TelemetrySettings = tt.newTelemetrySettings()
3636
return set
3737
}
3838
{{- end }}
3939

4040
func (tt *componentTestTelemetry) newTelemetrySettings() component.TelemetrySettings {
4141
set := componenttest.NewNopTelemetrySettings()
4242
set.MeterProvider = tt.meterProvider
43+
set.MetricsLevel = configtelemetry.LevelDetailed
4344
set.LeveledMeterProvider = func(_ configtelemetry.Level) metric.MeterProvider {
4445
return tt.meterProvider
4546
}

cmd/mdatagen/internal/templates/telemetry.go.tmpl

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ import (
2020
"go.opentelemetry.io/collector/config/configtelemetry"
2121
)
2222

23-
// Deprecated: [v0.108.0] use LeveledMeter instead.
2423
func Meter(settings component.TelemetrySettings) metric.Meter {
2524
return settings.MeterProvider.Meter("{{ .ScopeName }}")
2625
}
2726

27+
// Deprecated: [v0.114.0] use Meter instead.
2828
func LeveledMeter(settings component.TelemetrySettings, level configtelemetry.Level) metric.Meter {
2929
return settings.LeveledMeterProvider(level).Meter("{{ .ScopeName }}")
3030
}
@@ -44,7 +44,6 @@ type TelemetryBuilder struct {
4444
observe{{ $name.Render }} func(context.Context, metric.Observer) error
4545
{{- end }}
4646
{{- end }}
47-
meters map[configtelemetry.Level]metric.Meter
4847
}
4948

5049
// TelemetryBuilderOption applies changes to default builder.
@@ -64,7 +63,7 @@ func (tbof telemetryBuilderOptionFunc) apply(mb *TelemetryBuilder) {
6463
// Init{{ $name.Render }} configures the {{ $name.Render }} metric.
6564
func (builder *TelemetryBuilder) Init{{ $name.Render }}({{ if $metric.Data.Async -}}cb func() {{ $metric.Data.BasicType }}{{- end }}, opts ...metric.ObserveOption) error {
6665
var err error
67-
builder.{{ $name.Render }}, err = builder.meters[configtelemetry.Level{{ casesTitle $metric.Level.String }}].{{ $metric.Data.Instrument }}(
66+
builder.{{ $name.Render }}, err = builder.meter.{{ $metric.Data.Instrument }}(
6867
"otelcol_{{ $name }}",
6968
metric.WithDescription("{{ $metric.Description }}"),
7069
metric.WithUnit("{{ $metric.Unit }}"),
@@ -76,7 +75,7 @@ func (builder *TelemetryBuilder) Init{{ $name.Render }}({{ if $metric.Data.Async
7675
if err != nil {
7776
return err
7877
}
79-
_, err = builder.meters[configtelemetry.Level{{ casesTitle $metric.Level.String }}].RegisterCallback(func(_ context.Context, o metric.Observer) error {
78+
_, err = builder.meter.RegisterCallback(func(_ context.Context, o metric.Observer) error {
8079
o.Observe{{ casesTitle $metric.Data.BasicType }}(builder.{{ $name.Render }}, cb(), opts...)
8180
return nil
8281
}, builder.{{ $name.Render }})
@@ -103,18 +102,16 @@ func With{{ $name.Render }}Callback(cb func() {{ $metric.Data.BasicType }}, opts
103102
// NewTelemetryBuilder provides a struct with methods to update all internal telemetry
104103
// for a component
105104
func NewTelemetryBuilder(settings component.TelemetrySettings, options ...TelemetryBuilderOption) (*TelemetryBuilder, error) {
106-
builder := TelemetryBuilder{meters: map[configtelemetry.Level]metric.Meter{}}
105+
builder := TelemetryBuilder{}
107106
for _, op := range options {
108107
op.apply(&builder)
109108
}
110-
{{- range $level, $val := .Telemetry.Levels }}
111-
builder.meters[configtelemetry.Level{{ casesTitle $level }}] = LeveledMeter(settings, configtelemetry.Level{{ casesTitle $level }})
112-
{{- end }}
109+
builder.meter = Meter(settings)
113110
var err, errs error
114111

115112
{{- range $name, $metric := .Telemetry.Metrics }}
116113
{{- if not $metric.Optional }}
117-
builder.{{ $name.Render }}, err = builder.meters[configtelemetry.Level{{ casesTitle $metric.Level.String }}].{{ $metric.Data.Instrument }}(
114+
builder.{{ $name.Render }}, err = getLeveledMeter(builder.meter, configtelemetry.Level{{ $metric.Level }}, settings.MetricsLevel).{{ $metric.Data.Instrument }}(
118115
"otelcol_{{ $name }}",
119116
metric.WithDescription("{{ $metric.Description }}{{ $metric.Stability }}"),
120117
metric.WithUnit("{{ $metric.Unit }}"),
@@ -124,12 +121,19 @@ func NewTelemetryBuilder(settings component.TelemetrySettings, options ...Teleme
124121
)
125122
errs = errors.Join(errs, err)
126123
{{- if $metric.Data.Async }}
127-
_, err = builder.meters[configtelemetry.Level{{ casesTitle $metric.Level.String }}].RegisterCallback(builder.observe{{ $name.Render }}, builder.{{ $name.Render }})
124+
_, err = getLeveledMeter(builder.meter, configtelemetry.Level{{ $metric.Level }}, settings.MetricsLevel).RegisterCallback(builder.observe{{ $name.Render }}, builder.{{ $name.Render }})
128125
errs = errors.Join(errs, err)
129126
{{- end }}
130127
{{- end }}
131128
{{- end }}
132129
return &builder, errs
133130
}
134131

132+
func getLeveledMeter(meter metric.Meter, cfgLevel, srvLevel configtelemetry.Level) metric.Meter {
133+
if cfgLevel <= srvLevel {
134+
return meter
135+
}
136+
return noop.Meter{}
137+
}
138+
135139
{{- end }}

component/componenttest/obsreporttest.go

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,19 @@ package componenttest // import "go.opentelemetry.io/collector/component/compone
55

66
import (
77
"context"
8+
"errors"
89

910
"go.opentelemetry.io/otel/attribute"
1011
"go.opentelemetry.io/otel/metric"
1112
sdkmetric "go.opentelemetry.io/otel/sdk/metric"
1213
"go.opentelemetry.io/otel/sdk/resource"
1314
sdktrace "go.opentelemetry.io/otel/sdk/trace"
1415
"go.opentelemetry.io/otel/sdk/trace/tracetest"
15-
"go.uber.org/multierr"
16+
"go.uber.org/zap"
1617

1718
"go.opentelemetry.io/collector/component"
1819
"go.opentelemetry.io/collector/config/configtelemetry"
20+
"go.opentelemetry.io/collector/pdata/pcommon"
1921
)
2022

2123
const (
@@ -32,12 +34,10 @@ const (
3234
)
3335

3436
type TestTelemetry struct {
35-
ts component.TelemetrySettings
3637
id component.ID
38+
ts component.TelemetrySettings
3739
SpanRecorder *tracetest.SpanRecorder
38-
39-
reader *sdkmetric.ManualReader
40-
meterProvider *sdkmetric.MeterProvider
40+
reader *sdkmetric.ManualReader
4141
}
4242

4343
// CheckExporterTraces checks that for the current exported values for trace exporter metrics match given values.
@@ -101,12 +101,9 @@ func (tts *TestTelemetry) CheckScraperMetrics(receiver component.ID, scraper com
101101

102102
// Shutdown unregisters any views and shuts down the SpanRecorder
103103
func (tts *TestTelemetry) Shutdown(ctx context.Context) error {
104-
var errs error
105-
errs = multierr.Append(errs, tts.SpanRecorder.Shutdown(ctx))
106-
if tts.meterProvider != nil {
107-
errs = multierr.Append(errs, tts.meterProvider.Shutdown(ctx))
108-
}
109-
return errs
104+
return errors.Join(
105+
tts.ts.TracerProvider.(*sdktrace.TracerProvider).Shutdown(ctx),
106+
tts.ts.MeterProvider.(*sdkmetric.MeterProvider).Shutdown(ctx))
110107
}
111108

112109
// TelemetrySettings returns the TestTelemetry's TelemetrySettings
@@ -118,23 +115,26 @@ func (tts *TestTelemetry) TelemetrySettings() component.TelemetrySettings {
118115
// The caller must pass the ID of the component being tested. The ID will be used by the CreateSettings and Check methods.
119116
// The caller must defer a call to `Shutdown` on the returned TestTelemetry.
120117
func SetupTelemetry(id component.ID) (TestTelemetry, error) {
121-
sr := new(tracetest.SpanRecorder)
122-
tp := sdktrace.NewTracerProvider(sdktrace.WithSpanProcessor(sr))
123-
124118
settings := TestTelemetry{
125-
ts: NewNopTelemetrySettings(),
126119
id: id,
127-
SpanRecorder: sr,
120+
reader: sdkmetric.NewManualReader(),
121+
SpanRecorder: new(tracetest.SpanRecorder),
128122
}
129-
settings.ts.TracerProvider = tp
130123

131-
settings.reader = sdkmetric.NewManualReader()
132-
settings.meterProvider = sdkmetric.NewMeterProvider(
124+
mp := sdkmetric.NewMeterProvider(
133125
sdkmetric.WithResource(resource.Empty()),
134126
sdkmetric.WithReader(settings.reader),
135127
)
136-
settings.ts.LeveledMeterProvider = func(_ configtelemetry.Level) metric.MeterProvider {
137-
return settings.meterProvider
128+
129+
settings.ts = component.TelemetrySettings{
130+
Logger: zap.NewNop(),
131+
TracerProvider: sdktrace.NewTracerProvider(sdktrace.WithSpanProcessor(settings.SpanRecorder)),
132+
MeterProvider: mp,
133+
LeveledMeterProvider: func(_ configtelemetry.Level) metric.MeterProvider {
134+
return mp
135+
},
136+
MetricsLevel: configtelemetry.LevelDetailed,
137+
Resource: pcommon.NewResource(),
138138
}
139139

140140
return settings, nil

component/telemetry.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,11 @@ type TelemetrySettings struct {
2222
TracerProvider trace.TracerProvider
2323

2424
// MeterProvider that the factory can pass to other instrumented third-party libraries.
25-
//
26-
// Deprecated [v0.109.0]: use LeveledMeterProvider instead.
2725
MeterProvider metric.MeterProvider
2826

2927
// LeveledMeterProvider returns a MeterProvider for a Level that the factory can
3028
// pass to other instrumented third-party libraries.
29+
// Deprecated [v0.114.0]: use MeterProvider instead.
3130
LeveledMeterProvider func(level configtelemetry.Level) metric.MeterProvider
3231

3332
// MetricsLevel represents the configuration value set when the collector

0 commit comments

Comments
 (0)