diff --git a/metrics_sdk/lib/opentelemetry/sdk/metrics/aggregation/sum.rb b/metrics_sdk/lib/opentelemetry/sdk/metrics/aggregation/sum.rb index dfce24379..a858b28ea 100644 --- a/metrics_sdk/lib/opentelemetry/sdk/metrics/aggregation/sum.rb +++ b/metrics_sdk/lib/opentelemetry/sdk/metrics/aggregation/sum.rb @@ -40,6 +40,8 @@ def collect(start_time, end_time, data_points) end def update(increment, attributes, data_points) + return if @is_monotonic && increment < 0 + ndp = data_points[attributes] || data_points[attributes] = NumberDataPoint.new( attributes, nil, @@ -48,8 +50,6 @@ def update(increment, attributes, data_points) nil ) - return if is_monotonic && increment < 0 - ndp.value += increment nil end diff --git a/metrics_sdk/lib/opentelemetry/sdk/metrics/state/metric_stream.rb b/metrics_sdk/lib/opentelemetry/sdk/metrics/state/metric_stream.rb index 808c64fd0..1d16d44f6 100644 --- a/metrics_sdk/lib/opentelemetry/sdk/metrics/state/metric_stream.rb +++ b/metrics_sdk/lib/opentelemetry/sdk/metrics/state/metric_stream.rb @@ -67,7 +67,7 @@ def update(value, attributes) def aggregate_metric_data(start_time, end_time, aggregation: nil) aggregator = aggregation || @default_aggregation - is_monotonic = aggregator.respond_to?(:is_monotonic) && aggregator.is_monotonic + is_monotonic = aggregator.respond_to?(:is_monotonic) ? aggregator.is_monotonic : nil MetricData.new( @name,