Skip to content

Commit f4f9a1c

Browse files
authored
fix: Do not log error when there are no metrics to export (#1953)
* Fix debug logging when there are no metrics to export When collected_metrics is empty, result_code was not getting set and so report_result would fail. Reported by: @utay Related to: #1947 and #1888 * use case statement * do not log errors * Favor modifier if usage when having a single-line body.
1 parent 6f70825 commit f4f9a1c

File tree

2 files changed

+1
-29
lines changed

2 files changed

+1
-29
lines changed

metrics_sdk/lib/opentelemetry/sdk/metrics/export/periodic_metric_reader.rb

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,7 @@ def export(timeout: nil)
130130
end
131131

132132
def report_result(result_code)
133-
if result_code == Export::SUCCESS
134-
OpenTelemetry.logger.debug 'Successfully exported metrics'
135-
else
136-
OpenTelemetry.handle_error(exception: ExportError.new('Unable to export metrics'))
137-
OpenTelemetry.logger.error("Result code: #{result_code}")
138-
end
133+
OpenTelemetry.logger.debug 'Successfully exported metrics' if result_code == Export::SUCCESS
139134
end
140135

141136
def lock(&block)

metrics_sdk/test/opentelemetry/sdk/metrics/export/periodic_metric_reader_test.rb

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
describe OpenTelemetry::SDK::Metrics::Export::PeriodicMetricReader do
1010
PeriodicMetricReader = OpenTelemetry::SDK::Metrics::Export::PeriodicMetricReader
1111
SUCCESS = OpenTelemetry::SDK::Metrics::Export::SUCCESS
12-
FAILURE = OpenTelemetry::SDK::Metrics::Export::FAILURE
13-
TIMEOUT = OpenTelemetry::SDK::Metrics::Export::TIMEOUT
1412

1513
class TestExporter
1614
def initialize(status_codes: nil)
@@ -35,27 +33,6 @@ def shutdown(timeout: nil) = SUCCESS
3533
def force_flush(timeout: nil) = SUCCESS
3634
end
3735

38-
describe 'exporter with failure' do
39-
let(:exporter) { TestExporter.new(status_codes: [FAILURE]) }
40-
let(:reader) { PeriodicMetricReader.new(exporter: exporter) }
41-
42-
it 'logs export failure as error' do
43-
mock_logger = Minitest::Mock.new
44-
mock_logger.expect(:error, nil, [/Unable to export metrics/])
45-
mock_logger.expect(:error, nil, [/Result code: 1/])
46-
47-
# Stub collect to return a non-empty array so export is actually called
48-
reader.stub(:collect, ['mock_metric']) do
49-
OpenTelemetry.stub(:logger, mock_logger) do
50-
reader.force_flush
51-
end
52-
end
53-
54-
reader.shutdown
55-
mock_logger.verify
56-
end
57-
end
58-
5936
describe 'succesful exporter' do
6037
let(:exporter) { TestExporter.new(status_codes: [SUCCESS]) }
6138
let(:reader) { PeriodicMetricReader.new(exporter: exporter) }

0 commit comments

Comments
 (0)