opentelemetry-sdk 1.3.1 → 1.3.2
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 +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/opentelemetry/sdk/internal.rb +5 -5
- data/lib/opentelemetry/sdk/trace/export/batch_span_processor.rb +9 -9
- data/lib/opentelemetry/sdk/trace/span.rb +6 -6
- data/lib/opentelemetry/sdk/trace/tracer_provider.rb +1 -1
- data/lib/opentelemetry/sdk/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ef291be552aa487d0348eeadee291923710eb8621f74b552d41835f480056869
|
4
|
+
data.tar.gz: 84ccd40e5b33a3a7a4c0c90b265e87708f3f42ba843166b39d2282aa5eb2382a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 43c4598b75aaeea2c46e89c72db0bc10b2a78a9a9d553c3bf777d65dc0b80a8cdab4d3c0c52f05fa9fdf691a4e3e8e8cb5e808c4d762fdca7cfa0832ee6dd1a1
|
7
|
+
data.tar.gz: c4e434f89f6a8ee8207b8036e31147db0ea9bf4931bb6130db120c6b6a0b78a93ca32e17bf1316a1b56f6162724335716cfaaf34b6b046a1df28be22de4b9653
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# Release History: opentelemetry-sdk
|
2
2
|
|
3
|
+
### v1.3.2 / 2024-01-23
|
4
|
+
|
5
|
+
* FIXED: Reduce allocations on GraphQL hot paths
|
6
|
+
* FIXED: Add context to metrics reporting of buffer-full events
|
7
|
+
|
3
8
|
### v1.3.1 / 2023-11-02
|
4
9
|
|
5
10
|
* FIXED: Spec compliance for span attribute limit
|
@@ -49,17 +49,17 @@ module OpenTelemetry
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def valid_attributes?(owner, kind, attrs)
|
52
|
-
attrs.nil? || attrs.
|
52
|
+
attrs.nil? || attrs.each do |k, v|
|
53
53
|
if !valid_key?(k)
|
54
54
|
OpenTelemetry.handle_error(message: "invalid #{kind} attribute key type #{k.class} on span '#{owner}'")
|
55
|
-
false
|
55
|
+
return false
|
56
56
|
elsif !valid_value?(v)
|
57
57
|
OpenTelemetry.handle_error(message: "invalid #{kind} attribute value type #{v.class} for key '#{k}' on span '#{owner}'")
|
58
|
-
false
|
59
|
-
else
|
60
|
-
true
|
58
|
+
return false
|
61
59
|
end
|
62
60
|
end
|
61
|
+
|
62
|
+
true
|
63
63
|
end
|
64
64
|
end
|
65
65
|
end
|
@@ -81,8 +81,8 @@ module OpenTelemetry
|
|
81
81
|
reset_on_fork
|
82
82
|
n = spans.size + 1 - max_queue_size
|
83
83
|
if n.positive?
|
84
|
-
spans.shift(n)
|
85
|
-
report_dropped_spans(
|
84
|
+
dropped_spans = spans.shift(n)
|
85
|
+
report_dropped_spans(dropped_spans, reason: 'buffer-full', function: __method__.to_s)
|
86
86
|
end
|
87
87
|
spans << span
|
88
88
|
@condition.signal if spans.size > batch_size
|
@@ -122,8 +122,8 @@ module OpenTelemetry
|
|
122
122
|
lock do
|
123
123
|
n = spans.size + snapshot.size - max_queue_size
|
124
124
|
if n.positive?
|
125
|
-
snapshot.shift(n)
|
126
|
-
report_dropped_spans(
|
125
|
+
dropped_spans = snapshot.shift(n)
|
126
|
+
report_dropped_spans(dropped_spans, reason: 'buffer-full', function: __method__.to_s)
|
127
127
|
end
|
128
128
|
spans.unshift(snapshot) unless snapshot.empty?
|
129
129
|
@condition.signal if spans.size > max_queue_size / 2
|
@@ -146,8 +146,8 @@ module OpenTelemetry
|
|
146
146
|
|
147
147
|
thread&.join(timeout)
|
148
148
|
force_flush(timeout: OpenTelemetry::Common::Utilities.maybe_timeout(timeout, start_time))
|
149
|
-
dropped_spans = lock { spans.
|
150
|
-
report_dropped_spans(dropped_spans, reason: 'terminating') if dropped_spans.
|
149
|
+
dropped_spans = lock { spans.shift(spans.length) }
|
150
|
+
report_dropped_spans(dropped_spans, reason: 'terminating') if dropped_spans.any?
|
151
151
|
@exporter.shutdown(timeout: OpenTelemetry::Common::Utilities.maybe_timeout(timeout, start_time))
|
152
152
|
end
|
153
153
|
|
@@ -200,12 +200,12 @@ module OpenTelemetry
|
|
200
200
|
else
|
201
201
|
OpenTelemetry.handle_error(exception: ExportError.new("Unable to export #{batch.size} spans"))
|
202
202
|
@metrics_reporter.add_to_counter('otel.bsp.export.failure')
|
203
|
-
report_dropped_spans(batch
|
203
|
+
report_dropped_spans(batch, reason: 'export-failure')
|
204
204
|
end
|
205
205
|
end
|
206
206
|
|
207
|
-
def report_dropped_spans(
|
208
|
-
@metrics_reporter.add_to_counter('otel.bsp.dropped_spans', increment:
|
207
|
+
def report_dropped_spans(dropped_spans, reason:, function: nil)
|
208
|
+
@metrics_reporter.add_to_counter('otel.bsp.dropped_spans', increment: dropped_spans.size, labels: { 'reason' => reason, OpenTelemetry::SemanticConventions::Trace::CODE_FUNCTION => function }.compact)
|
209
209
|
end
|
210
210
|
|
211
211
|
def fetch_batch
|
@@ -282,7 +282,7 @@ module OpenTelemetry
|
|
282
282
|
end
|
283
283
|
|
284
284
|
# @api private
|
285
|
-
def initialize(context, parent_context, parent_span, name, kind, parent_span_id, span_limits, span_processors, attributes, links, start_timestamp, resource, instrumentation_scope) # rubocop:disable
|
285
|
+
def initialize(context, parent_context, parent_span, name, kind, parent_span_id, span_limits, span_processors, attributes, links, start_timestamp, resource, instrumentation_scope) # rubocop:disable Metrics/MethodLength, Metrics/PerceivedComplexity
|
286
286
|
super(span_context: context)
|
287
287
|
@mutex = Mutex.new
|
288
288
|
@name = name
|
@@ -297,7 +297,7 @@ module OpenTelemetry
|
|
297
297
|
@total_recorded_events = 0
|
298
298
|
@total_recorded_links = links&.size || 0
|
299
299
|
@total_recorded_attributes = attributes&.size || 0
|
300
|
-
@attributes = attributes
|
300
|
+
@attributes = attributes
|
301
301
|
trim_span_attributes(@attributes)
|
302
302
|
@events = nil
|
303
303
|
@links = trim_links(links, span_limits.link_count_limit, span_limits.link_attribute_count_limit)
|
@@ -317,7 +317,7 @@ module OpenTelemetry
|
|
317
317
|
# SpanData.
|
318
318
|
@monotonic_start_timestamp = monotonic_now
|
319
319
|
@realtime_start_timestamp = if parent_span.recording?
|
320
|
-
relative_realtime(parent_span.realtime_start_timestamp, parent_span.monotonic_start_timestamp)
|
320
|
+
relative_realtime(parent_span.realtime_start_timestamp, parent_span.monotonic_start_timestamp, @monotonic_start_timestamp)
|
321
321
|
else
|
322
322
|
realtime_now
|
323
323
|
end
|
@@ -419,15 +419,15 @@ module OpenTelemetry
|
|
419
419
|
def relative_timestamp(timestamp)
|
420
420
|
return time_in_nanoseconds(timestamp) unless timestamp.nil?
|
421
421
|
|
422
|
-
relative_realtime(realtime_start_timestamp, monotonic_start_timestamp)
|
422
|
+
relative_realtime(realtime_start_timestamp, monotonic_start_timestamp, monotonic_now)
|
423
423
|
end
|
424
424
|
|
425
425
|
def time_in_nanoseconds(timestamp)
|
426
426
|
(timestamp.to_r * 1_000_000_000).to_i
|
427
427
|
end
|
428
428
|
|
429
|
-
def relative_realtime(realtime_base, monotonic_base)
|
430
|
-
realtime_base + (
|
429
|
+
def relative_realtime(realtime_base, monotonic_base, now)
|
430
|
+
realtime_base + (now - monotonic_base)
|
431
431
|
end
|
432
432
|
|
433
433
|
def realtime_now
|
@@ -141,7 +141,7 @@ module OpenTelemetry
|
|
141
141
|
if result.recording? && !@stopped
|
142
142
|
trace_flags = result.sampled? ? OpenTelemetry::Trace::TraceFlags::SAMPLED : OpenTelemetry::Trace::TraceFlags::DEFAULT
|
143
143
|
context = OpenTelemetry::Trace::SpanContext.new(trace_id: trace_id, span_id: span_id, trace_flags: trace_flags, tracestate: result.tracestate)
|
144
|
-
attributes = attributes&.merge(result.attributes) || result.attributes
|
144
|
+
attributes = attributes&.merge(result.attributes) || result.attributes.dup
|
145
145
|
Span.new(
|
146
146
|
context,
|
147
147
|
parent_context,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opentelemetry-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OpenTelemetry Authors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opentelemetry-api
|
@@ -294,10 +294,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby
|
|
294
294
|
licenses:
|
295
295
|
- Apache-2.0
|
296
296
|
metadata:
|
297
|
-
changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-sdk/v1.3.
|
297
|
+
changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-sdk/v1.3.2/file.CHANGELOG.html
|
298
298
|
source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/main/sdk
|
299
299
|
bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
|
300
|
-
documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-sdk/v1.3.
|
300
|
+
documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-sdk/v1.3.2
|
301
301
|
post_install_message:
|
302
302
|
rdoc_options: []
|
303
303
|
require_paths:
|