Skip to content

Commit 11227c2

Browse files
committed
Fix bug where the error logged when conversion of data fails is always nil
Signed-off-by: Bogdan Drutu <[email protected]>
1 parent 216046a commit 11227c2

File tree

5 files changed

+85
-44
lines changed

5 files changed

+85
-44
lines changed

.chloggen/fix-wrong-error-log.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: bug_fix
5+
6+
# The name of the component, or a single word describing the area of concern, (e.g. otlpreceiver)
7+
component: exporterhelper
8+
9+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
10+
note: Fix bug where the error logged when conversion of data fails is always nil
11+
12+
# One or more tracking issues or pull requests related to the change
13+
issues: [12510]
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: [user]

exporter/exporterhelper/logs.go

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -131,19 +131,23 @@ func NewLogsRequest(
131131
return nil, err
132132
}
133133

134-
lc, err := consumer.NewLogs(func(ctx context.Context, ld plog.Logs) error {
135-
req, cErr := converter(ctx, ld)
136-
if cErr != nil {
137-
set.Logger.Error("Failed to convert logs. Dropping data.",
134+
lc, err := consumer.NewLogs(newConsumeLogs(converter, be, set.Logger), be.ConsumerOptions...)
135+
if err != nil {
136+
return nil, err
137+
}
138+
139+
return &logsExporter{BaseExporter: be, Logs: lc}, nil
140+
}
141+
142+
func newConsumeLogs(converter RequestFromLogsFunc, be *internal.BaseExporter, logger *zap.Logger) consumer.ConsumeLogsFunc {
143+
return func(ctx context.Context, ld plog.Logs) error {
144+
req, err := converter(ctx, ld)
145+
if err != nil {
146+
logger.Error("Failed to convert metrics. Dropping data.",
138147
zap.Int("dropped_log_records", ld.LogRecordCount()),
139148
zap.Error(err))
140-
return consumererror.NewPermanent(cErr)
149+
return consumererror.NewPermanent(err)
141150
}
142151
return be.Send(ctx, req)
143-
}, be.ConsumerOptions...)
144-
145-
return &logsExporter{
146-
BaseExporter: be,
147-
Logs: lc,
148-
}, err
152+
}
149153
}

exporter/exporterhelper/metrics.go

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -131,19 +131,23 @@ func NewMetricsRequest(
131131
return nil, err
132132
}
133133

134-
mc, err := consumer.NewMetrics(func(ctx context.Context, md pmetric.Metrics) error {
135-
req, cErr := converter(ctx, md)
136-
if cErr != nil {
137-
set.Logger.Error("Failed to convert metrics. Dropping data.",
134+
mc, err := consumer.NewMetrics(newConsumeMetrics(converter, be, set.Logger), be.ConsumerOptions...)
135+
if err != nil {
136+
return nil, err
137+
}
138+
139+
return &metricsExporter{BaseExporter: be, Metrics: mc}, nil
140+
}
141+
142+
func newConsumeMetrics(converter RequestFromMetricsFunc, be *internal.BaseExporter, logger *zap.Logger) consumer.ConsumeMetricsFunc {
143+
return func(ctx context.Context, md pmetric.Metrics) error {
144+
req, err := converter(ctx, md)
145+
if err != nil {
146+
logger.Error("Failed to convert metrics. Dropping data.",
138147
zap.Int("dropped_data_points", md.DataPointCount()),
139148
zap.Error(err))
140-
return consumererror.NewPermanent(cErr)
149+
return consumererror.NewPermanent(err)
141150
}
142151
return be.Send(ctx, req)
143-
}, be.ConsumerOptions...)
144-
145-
return &metricsExporter{
146-
BaseExporter: be,
147-
Metrics: mc,
148-
}, err
152+
}
149153
}

exporter/exporterhelper/traces.go

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -131,19 +131,23 @@ func NewTracesRequest(
131131
return nil, err
132132
}
133133

134-
tc, err := consumer.NewTraces(func(ctx context.Context, td ptrace.Traces) error {
135-
req, cErr := converter(ctx, td)
136-
if cErr != nil {
137-
set.Logger.Error("Failed to convert traces. Dropping data.",
134+
tc, err := consumer.NewTraces(newConsumeTraces(converter, be, set.Logger), be.ConsumerOptions...)
135+
if err != nil {
136+
return nil, err
137+
}
138+
139+
return &tracesExporter{BaseExporter: be, Traces: tc}, nil
140+
}
141+
142+
func newConsumeTraces(converter RequestFromTracesFunc, be *internal.BaseExporter, logger *zap.Logger) consumer.ConsumeTracesFunc {
143+
return func(ctx context.Context, td ptrace.Traces) error {
144+
req, err := converter(ctx, td)
145+
if err != nil {
146+
logger.Error("Failed to convert metrics. Dropping data.",
138147
zap.Int("dropped_spans", td.SpanCount()),
139148
zap.Error(err))
140-
return consumererror.NewPermanent(cErr)
149+
return consumererror.NewPermanent(err)
141150
}
142151
return be.Send(ctx, req)
143-
}, be.ConsumerOptions...)
144-
145-
return &tracesExporter{
146-
BaseExporter: be,
147-
Traces: tc,
148-
}, err
152+
}
149153
}

exporter/exporterhelper/xexporterhelper/profiles.go

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -134,19 +134,23 @@ func NewProfilesRequestExporter(
134134
return nil, err
135135
}
136136

137-
tc, err := xconsumer.NewProfiles(func(ctx context.Context, pd pprofile.Profiles) error {
138-
req, cErr := converter(ctx, pd)
139-
if cErr != nil {
140-
set.Logger.Error("Failed to convert profiles. Dropping data.",
137+
tc, err := xconsumer.NewProfiles(newConsumeProfiles(converter, be, set.Logger), be.ConsumerOptions...)
138+
if err != nil {
139+
return nil, err
140+
}
141+
142+
return &profileExporter{BaseExporter: be, Profiles: tc}, nil
143+
}
144+
145+
func newConsumeProfiles(converter RequestFromProfilesFunc, be *internal.BaseExporter, logger *zap.Logger) xconsumer.ConsumeProfilesFunc {
146+
return func(ctx context.Context, pd pprofile.Profiles) error {
147+
req, err := converter(ctx, pd)
148+
if err != nil {
149+
logger.Error("Failed to convert metrics. Dropping data.",
141150
zap.Int("dropped_samples", pd.SampleCount()),
142151
zap.Error(err))
143-
return consumererror.NewPermanent(cErr)
152+
return consumererror.NewPermanent(err)
144153
}
145154
return be.Send(ctx, req)
146-
}, be.ConsumerOptions...)
147-
148-
return &profileExporter{
149-
BaseExporter: be,
150-
Profiles: tc,
151-
}, err
155+
}
152156
}

0 commit comments

Comments
 (0)