opentelemetry-metrics-sdk 0.11.0 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ac17345b1f4d2a296aa95591e64264cd7bc03e94b5b6cac35ff0a0067b8a457f
4
- data.tar.gz: d22cdd5f1c3f5f0d9745e330874d47c232bb451a986a4304f003e796a598abf7
3
+ metadata.gz: be2c2be010e35c2ffd6ae04b7e4f0dc5ef5d947bb8882a144c35adac917f6c15
4
+ data.tar.gz: 618cfc51dff8e51f3923cc0b926a24fd3c83a4c7cf709eb4e4eb2e44c8d6cae7
5
5
  SHA512:
6
- metadata.gz: ec0286d37a8a6143b239931c7f68853b5b9d5053ca00da5edfefb665713aef4522995f3ed082674e63c026e99883ef7a59ac7a4dc2b0803d8c17d4a11e4ee58e
7
- data.tar.gz: 1ac16f88eec4c62c7efeb494333e2c63d1f55f8d90e027ea9750d76dc7fe72c503fa03c9fa24fc91543e041df2957daf977fe45a7b072e9bdfbe4408312cabf0
6
+ metadata.gz: d59a00637d3148f71e9f454755f24ca365816b6126aad33f98c6e1d26a45d80169e6df7ff0782624eabb7f2567ef1a543ee34cff7fd665e9d1a692ddba4c2e65
7
+ data.tar.gz: 64c8d11702ef17144774ed3f4cb1236502c954460e4c44cc48d7c6f85f9171cc0db03f98dd22f55cd3908aba1f4fcd9966938d58ad7c9cc4d1bf91aa10aabe75
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Release History: opentelemetry-metrics-sdk
2
2
 
3
+ ### v0.11.1 / 2025-11-04
4
+
5
+ * FIXED: Do not log error when there are no metrics to export
6
+
3
7
  ### v0.11.0 / 2025-10-28
4
8
 
5
9
  * ADDED: Add logging about export status to Metrics SDK
@@ -130,12 +130,7 @@ module OpenTelemetry
130
130
  end
131
131
 
132
132
  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
139
134
  end
140
135
 
141
136
  def lock(&block)
@@ -56,7 +56,7 @@ module OpenTelemetry
56
56
  end
57
57
  end
58
58
  else
59
- @registered_views.each do |view|
59
+ @registered_views.each do |view, data_points|
60
60
  @mutex.synchronize do
61
61
  @callback.each do |cb|
62
62
  value = safe_guard_callback(cb, timeout: timeout)
@@ -64,7 +64,7 @@ module OpenTelemetry
64
64
 
65
65
  merged_attributes = attributes || {}
66
66
  merged_attributes.merge!(view.attribute_keys)
67
- view.aggregation.update(value, merged_attributes, @data_points) if view.valid_aggregation?
67
+ view.aggregation.update(value, merged_attributes, data_points) if view.valid_aggregation?
68
68
  end
69
69
  end
70
70
  end
@@ -78,19 +78,19 @@ module OpenTelemetry
78
78
  thread = Thread.new do
79
79
  result = callback.call
80
80
  rescue StandardError => e
81
- OpenTelemetry.logger.error("Error invoking callback: #{e.message}")
81
+ OpenTelemetry.handle_error(exception: e, message: 'Error invoking callback.')
82
82
  result = :error
83
83
  end
84
84
 
85
85
  unless thread.join(timeout)
86
86
  thread.kill
87
- OpenTelemetry.logger.error("Timeout while invoking callback after #{timeout} seconds")
87
+ OpenTelemetry.handle_error(message: "Timeout while invoking callback after #{timeout} seconds")
88
88
  return nil
89
89
  end
90
90
 
91
91
  result == :error ? nil : result
92
92
  rescue StandardError => e
93
- OpenTelemetry.logger.error("Unexpected error in callback execution: #{e.message}")
93
+ OpenTelemetry.handle_error(exception: e, message: 'Unexpected error in callback execution.')
94
94
  nil
95
95
  end
96
96
  end
@@ -32,7 +32,7 @@ module OpenTelemetry
32
32
  @instrumentation_scope = instrumentation_scope
33
33
  @default_aggregation = aggregation
34
34
  @data_points = {}
35
- @registered_views = []
35
+ @registered_views = {}
36
36
 
37
37
  find_registered_view
38
38
  @mutex = Mutex.new
@@ -43,12 +43,14 @@ module OpenTelemetry
43
43
  metric_data = []
44
44
 
45
45
  # data points are required to export over OTLP
46
- return metric_data if @data_points.empty?
46
+ return metric_data if empty_data_point?
47
47
 
48
48
  if @registered_views.empty?
49
49
  metric_data << aggregate_metric_data(start_time, end_time)
50
50
  else
51
- @registered_views.each { |view| metric_data << aggregate_metric_data(start_time, end_time, aggregation: view.aggregation) }
51
+ @registered_views.each do |view, data_points|
52
+ metric_data << aggregate_metric_data(start_time, end_time, aggregation: view.aggregation, data_points: data_points)
53
+ end
52
54
  end
53
55
 
54
56
  metric_data
@@ -60,20 +62,21 @@ module OpenTelemetry
60
62
  if @registered_views.empty?
61
63
  @mutex.synchronize { @default_aggregation.update(value, attributes, @data_points) }
62
64
  else
63
- @registered_views.each do |view|
65
+ @registered_views.each do |view, data_points|
64
66
  @mutex.synchronize do
65
67
  attributes ||= {}
66
68
  attributes.merge!(view.attribute_keys)
67
- view.aggregation.update(value, attributes, @data_points) if view.valid_aggregation?
69
+ view.aggregation.update(value, attributes, data_points) if view.valid_aggregation?
68
70
  end
69
71
  end
70
72
  end
71
73
  end
72
74
 
73
- def aggregate_metric_data(start_time, end_time, aggregation: nil)
75
+ def aggregate_metric_data(start_time, end_time, aggregation: nil, data_points: nil)
74
76
  aggregator = aggregation || @default_aggregation
75
77
  is_monotonic = aggregator.respond_to?(:monotonic?) ? aggregator.monotonic? : nil
76
78
  aggregation_temporality = aggregator.respond_to?(:aggregation_temporality) ? aggregator.aggregation_temporality : nil
79
+ data_point = data_points || @data_points
77
80
 
78
81
  MetricData.new(
79
82
  @name,
@@ -82,7 +85,7 @@ module OpenTelemetry
82
85
  @instrument_kind,
83
86
  @meter_provider.resource,
84
87
  @instrumentation_scope,
85
- aggregator.collect(start_time, end_time, @data_points),
88
+ aggregator.collect(start_time, end_time, data_point),
86
89
  aggregation_temporality,
87
90
  start_time,
88
91
  end_time,
@@ -93,7 +96,17 @@ module OpenTelemetry
93
96
  def find_registered_view
94
97
  return if @meter_provider.nil?
95
98
 
96
- @meter_provider.registered_views.each { |view| @registered_views << view if view.match_instrument?(self) }
99
+ @meter_provider.registered_views.each { |view| @registered_views[view] = {} if view.match_instrument?(self) }
100
+ end
101
+
102
+ def empty_data_point?
103
+ if @registered_views.empty?
104
+ @data_points.empty?
105
+ else
106
+ @registered_views.each_value do |data_points|
107
+ return false unless data_points.empty?
108
+ end
109
+ end
97
110
  end
98
111
 
99
112
  def to_s
@@ -8,7 +8,7 @@ module OpenTelemetry
8
8
  module SDK
9
9
  module Metrics
10
10
  # Current OpenTelemetry metrics sdk version
11
- VERSION = '0.11.0'
11
+ VERSION = '0.11.1'
12
12
  end
13
13
  end
14
14
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentelemetry-metrics-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.11.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenTelemetry Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-10-28 00:00:00.000000000 Z
11
+ date: 2025-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opentelemetry-api
@@ -251,10 +251,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby
251
251
  licenses:
252
252
  - Apache-2.0
253
253
  metadata:
254
- changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-metrics-sdk/v0.11.0/file.CHANGELOG.html
254
+ changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-metrics-sdk/v0.11.1/file.CHANGELOG.html
255
255
  source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/main/metrics_sdk
256
256
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
257
- documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-metrics-sdk/v0.11.0
257
+ documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-metrics-sdk/v0.11.1
258
258
  post_install_message:
259
259
  rdoc_options: []
260
260
  require_paths: