opentelemetry-exporter-otlp 0.35.0 → 0.35.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: 8a70dac4077778d7509007cb05dbee8be6a986fd42922989774a63d9fcae2c12
4
- data.tar.gz: 505e121828f48cb6422cc50a65dc3da7034af89a122d28a3aa69ef2c2a5748d7
3
+ metadata.gz: aab12b9c747b15ac934de3019f3ec6e158b5cb449b2adf7bd82dfd277706fe40
4
+ data.tar.gz: e964a0b367f4a2fa875b0b089291c09dbfdc4b68cd09c47c01d9920496e7f030
5
5
  SHA512:
6
- metadata.gz: be9417b211b89cfc33cb3d121d78c2016761ddbfa4df0a18b6e9431f6b35e6ad6bf40c1c9742f5077c136ab6b33e8e01e51817a6f72334c9fa88724d7a429db0
7
- data.tar.gz: 57c79d67e71d2dc46bc78b6deb504e6fb0fab260b16a57098534b51804b6a2132f344978af29cd689e0d480c74acc5c079057a7e9b153ff42a9468c827699190
6
+ metadata.gz: 4fa989d717b311dfa3b0549f4f8d9ae97781e0155cc120e27e24ae59a183feb6a0325b833a0700ee5e94656de88384ba56ebff0eedb4380706f47b123c71e94d
7
+ data.tar.gz: 993a85f5b384acf4f1f1f6a72c442e1d899356ba7eabe8e076d60b466ce1319a43798f01a270ea1454be71ea071c87319705b561f1236e2c0e73796356a22af6
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Release History: opentelemetry-exporter-otlp
2
2
 
3
+ ### v0.35.1 / 2026-09-01
4
+
5
+ * REVERT: Use common conversion including supporting flags (#2328)
6
+
3
7
  ### v0.35.0 / 2026-09-01
4
8
 
5
9
  * ADDED: Use common conversion including supporting flags (#2250)
@@ -5,7 +5,6 @@
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
7
7
  require 'opentelemetry/common'
8
- require 'opentelemetry/exporter/otlp/common'
9
8
  require 'opentelemetry/sdk'
10
9
  require 'net/http'
11
10
  require 'zlib'
@@ -106,6 +105,26 @@ module OpenTelemetry
106
105
 
107
106
  private
108
107
 
108
+ # Builds span flags based on whether the parent span context is remote.
109
+ # This follows the OTLP specification for span flags.
110
+ def build_span_flags(parent_span_is_remote, base_flags)
111
+ # Extract integer value from TraceFlags object if needed
112
+ # Derive the low 8-bit W3C trace flags using the public API.
113
+ base_flags_int =
114
+ if base_flags.sampled?
115
+ 1
116
+ else
117
+ 0
118
+ end
119
+
120
+ has_remote_mask = Opentelemetry::Proto::Trace::V1::SpanFlags::SPAN_FLAGS_CONTEXT_HAS_IS_REMOTE_MASK
121
+ is_remote_mask = Opentelemetry::Proto::Trace::V1::SpanFlags::SPAN_FLAGS_CONTEXT_IS_REMOTE_MASK
122
+
123
+ flags = base_flags_int | has_remote_mask
124
+ flags |= is_remote_mask if parent_span_is_remote
125
+ flags
126
+ end
127
+
109
128
  def http_connection(uri, ssl_verify_mode, certificate_file, client_certificate_file, client_key_file)
110
129
  http = Net::HTTP.new(uri.hostname, uri.port)
111
130
  http.use_ssl = uri.scheme == 'https'
@@ -274,9 +293,32 @@ module OpenTelemetry
274
293
  true
275
294
  end
276
295
 
277
- def encode(span_data)
296
+ def encode(span_data) # rubocop:disable Metrics/MethodLength, Metrics/CyclomaticComplexity
278
297
  start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
279
- OpenTelemetry::Exporter::OTLP::Common.as_encoded_etsr(span_data)
298
+ Opentelemetry::Proto::Collector::Trace::V1::ExportTraceServiceRequest.encode(
299
+ Opentelemetry::Proto::Collector::Trace::V1::ExportTraceServiceRequest.new(
300
+ resource_spans: span_data
301
+ .group_by(&:resource)
302
+ .map do |resource, span_datas|
303
+ Opentelemetry::Proto::Trace::V1::ResourceSpans.new(
304
+ resource: Opentelemetry::Proto::Resource::V1::Resource.new(
305
+ attributes: resource.attribute_enumerator.map { |key, value| as_otlp_key_value(key, value) }
306
+ ),
307
+ scope_spans: span_datas
308
+ .group_by(&:instrumentation_scope)
309
+ .map do |il, sds|
310
+ Opentelemetry::Proto::Trace::V1::ScopeSpans.new(
311
+ scope: Opentelemetry::Proto::Common::V1::InstrumentationScope.new(
312
+ name: il.name,
313
+ version: il.version
314
+ ),
315
+ spans: sds.map { |sd| as_otlp_span(sd) }
316
+ )
317
+ end
318
+ )
319
+ end
320
+ )
321
+ )
280
322
  rescue StandardError => e
281
323
  OpenTelemetry.handle_error(exception: e, message: 'unexpected error in OTLP::Exporter#encode')
282
324
  nil
@@ -287,6 +329,93 @@ module OpenTelemetry
287
329
  value: duration_ms)
288
330
  end
289
331
 
332
+ def as_otlp_span(span_data) # rubocop:disable Metrics/MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
333
+ Opentelemetry::Proto::Trace::V1::Span.new(
334
+ trace_id: span_data.trace_id,
335
+ span_id: span_data.span_id,
336
+ trace_state: span_data.tracestate.to_s,
337
+ parent_span_id: span_data.parent_span_id == OpenTelemetry::Trace::INVALID_SPAN_ID ? nil : span_data.parent_span_id,
338
+ name: span_data.name,
339
+ kind: as_otlp_span_kind(span_data.kind),
340
+ start_time_unix_nano: span_data.start_timestamp,
341
+ end_time_unix_nano: span_data.end_timestamp,
342
+ attributes: span_data.attributes&.map { |k, v| as_otlp_key_value(k, v) },
343
+ dropped_attributes_count: span_data.total_recorded_attributes - span_data.attributes&.size.to_i,
344
+ events: span_data.events&.map do |event|
345
+ Opentelemetry::Proto::Trace::V1::Span::Event.new(
346
+ time_unix_nano: event.timestamp,
347
+ name: event.name,
348
+ attributes: event.attributes&.map { |k, v| as_otlp_key_value(k, v) }
349
+ # TODO: track dropped_attributes_count in Span#append_event
350
+ )
351
+ end,
352
+ dropped_events_count: span_data.total_recorded_events - span_data.events&.size.to_i,
353
+ links: span_data.links&.map do |link|
354
+ Opentelemetry::Proto::Trace::V1::Span::Link.new(
355
+ trace_id: link.span_context.trace_id,
356
+ span_id: link.span_context.span_id,
357
+ trace_state: link.span_context.tracestate.to_s,
358
+ attributes: link.attributes&.map { |k, v| as_otlp_key_value(k, v) },
359
+ # TODO: track dropped_attributes_count in Span#trim_links
360
+ flags: build_span_flags(link.span_context.remote?, link.span_context.trace_flags)
361
+ )
362
+ end,
363
+ dropped_links_count: span_data.total_recorded_links - span_data.links&.size.to_i,
364
+ status: span_data.status&.then do |status|
365
+ Opentelemetry::Proto::Trace::V1::Status.new(
366
+ code: as_otlp_status_code(status.code),
367
+ message: status.description
368
+ )
369
+ end,
370
+ flags: build_span_flags(span_data.parent_span_is_remote, span_data.trace_flags)
371
+ )
372
+ end
373
+
374
+ def as_otlp_status_code(code)
375
+ case code
376
+ when OpenTelemetry::Trace::Status::OK then Opentelemetry::Proto::Trace::V1::Status::StatusCode::STATUS_CODE_OK
377
+ when OpenTelemetry::Trace::Status::ERROR then Opentelemetry::Proto::Trace::V1::Status::StatusCode::STATUS_CODE_ERROR
378
+ else Opentelemetry::Proto::Trace::V1::Status::StatusCode::STATUS_CODE_UNSET
379
+ end
380
+ end
381
+
382
+ def as_otlp_span_kind(kind)
383
+ case kind
384
+ when :internal then Opentelemetry::Proto::Trace::V1::Span::SpanKind::SPAN_KIND_INTERNAL
385
+ when :server then Opentelemetry::Proto::Trace::V1::Span::SpanKind::SPAN_KIND_SERVER
386
+ when :client then Opentelemetry::Proto::Trace::V1::Span::SpanKind::SPAN_KIND_CLIENT
387
+ when :producer then Opentelemetry::Proto::Trace::V1::Span::SpanKind::SPAN_KIND_PRODUCER
388
+ when :consumer then Opentelemetry::Proto::Trace::V1::Span::SpanKind::SPAN_KIND_CONSUMER
389
+ else Opentelemetry::Proto::Trace::V1::Span::SpanKind::SPAN_KIND_UNSPECIFIED
390
+ end
391
+ end
392
+
393
+ def as_otlp_key_value(key, value)
394
+ Opentelemetry::Proto::Common::V1::KeyValue.new(key: key, value: as_otlp_any_value(value))
395
+ rescue Encoding::UndefinedConversionError => e
396
+ encoded_value = value.encode('UTF-8', invalid: :replace, undef: :replace, replace: '�')
397
+ OpenTelemetry.handle_error(exception: e, message: "encoding error for key #{key} and value #{encoded_value}")
398
+ Opentelemetry::Proto::Common::V1::KeyValue.new(key: key, value: as_otlp_any_value('Encoding Error'))
399
+ end
400
+
401
+ def as_otlp_any_value(value)
402
+ result = Opentelemetry::Proto::Common::V1::AnyValue.new
403
+ case value
404
+ when String
405
+ result.string_value = value
406
+ when Integer
407
+ result.int_value = value
408
+ when Float
409
+ result.double_value = value
410
+ when true, false
411
+ result.bool_value = value
412
+ when Array
413
+ values = value.map { |element| as_otlp_any_value(element) }
414
+ result.array_value = Opentelemetry::Proto::Common::V1::ArrayValue.new(values: values)
415
+ end
416
+ result
417
+ end
418
+
290
419
  def prepare_endpoint(endpoint)
291
420
  endpoint ||= ENV.fetch('OTEL_EXPORTER_OTLP_TRACES_ENDPOINT', nil)
292
421
  if endpoint.nil?
@@ -8,7 +8,7 @@ module OpenTelemetry
8
8
  module Exporter
9
9
  module OTLP
10
10
  ## Current OpenTelemetry OTLP exporter version
11
- VERSION = '0.35.0'
11
+ VERSION = '0.35.1'
12
12
  end
13
13
  end
14
14
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentelemetry-exporter-otlp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.35.0
4
+ version: 0.35.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenTelemetry Authors
@@ -65,20 +65,6 @@ dependencies:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
67
  version: '0.20'
68
- - !ruby/object:Gem::Dependency
69
- name: opentelemetry-exporter-otlp-common
70
- requirement: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: '0'
75
- type: :runtime
76
- prerelease: false
77
- version_requirements: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: '0'
82
68
  - !ruby/object:Gem::Dependency
83
69
  name: opentelemetry-sdk
84
70
  requirement: !ruby/object:Gem::Requirement
@@ -136,10 +122,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby
136
122
  licenses:
137
123
  - Apache-2.0
138
124
  metadata:
139
- changelog_uri: https://rubydoc.info/gems/opentelemetry-exporter-otlp/0.35.0/file/CHANGELOG.md
140
- source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/opentelemetry-exporter-otlp/v0.35.0/exporter/otlp
125
+ changelog_uri: https://rubydoc.info/gems/opentelemetry-exporter-otlp/0.35.1/file/CHANGELOG.md
126
+ source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/opentelemetry-exporter-otlp/v0.35.1/exporter/otlp
141
127
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
142
- documentation_uri: https://rubydoc.info/gems/opentelemetry-exporter-otlp/0.35.0
128
+ documentation_uri: https://rubydoc.info/gems/opentelemetry-exporter-otlp/0.35.1
143
129
  rdoc_options: []
144
130
  require_paths:
145
131
  - lib