opentelemetry-propagator-jaeger 0.25.0 → 0.25.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e017199fafe9be33dd067407befa0c5953f7614b6be7973583c997155fa926ca
4
- data.tar.gz: ac8e0d7f4b3118ceed9896c53e9bde6bb94abc151bad1647098cf4236a50e028
3
+ metadata.gz: 0c9797fc20399bbc7314cbdf397822443b340f929995d4dee351c95a1d6fcbae
4
+ data.tar.gz: 924be198477b03252c17bfa987804d9ebc57786878ba54f055ef5785fb91239a
5
5
  SHA512:
6
- metadata.gz: 2b29147171d3eb0d5f8f4954c2dc0843c2f2990f825d25f8008b268eaa408798139610e7a5c0390a28bf146de3c02f9d56b98b45c1991ac2352c255649a44fb6
7
- data.tar.gz: 1e8f5309483b55a1bfe289dc96eb31f1751e80d2841fd3312488cbff798e5839c73c8cc9105ef616a29b657b35334a6bc3b07cab1eedc664bd7fb9f76bf0740b
6
+ metadata.gz: c283c3371e5fba81c0ec21d124b637121fa66a8ed8307adc788ffd3746191d976831c982331e637c7dee4b008a58736c7b401ac49ee4ab2b231a48f0703d75e6
7
+ data.tar.gz: c42a65b3ca93b3cd1ec3a15fd664e3e2c99e905b4f954328b97fc515bdc13d899599b0e2e58a2b98250d12a159fe4cbf3bf5ddcd65eb8e7cc442a85c252a4036
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Release History: opentelemetry-propagator-jaeger
2
2
 
3
+ ### v0.25.2 / 2026-09-15
4
+
5
+ * FIXED: Enforce baggage limits on the Jaeger extract path (#2299)
6
+
7
+ ### v0.25.1 / 2026-07-08
8
+
9
+ * DOCS: Update source for gemspec links to RubyDoc (#2123)
10
+
3
11
  ### v0.25.0 / 2026-05-12
4
12
 
5
13
  * ADDED: Add git tag to source URI in gemspec (#2101)
@@ -60,9 +68,6 @@
60
68
  ### v0.17.0 / 2021-04-22
61
69
 
62
70
  - BREAKING CHANGE: Replace TextMapInjector/TextMapExtractor pairs with a TextMapPropagator.
63
-
64
- [Check the propagator documentation](https://open-telemetry.github.io/opentelemetry-ruby/) for the new usage.
65
-
66
71
  - FIXED: Refactor propagators to add #fields
67
72
 
68
73
  ### v0.16.0 / 2021-03-17
@@ -24,12 +24,16 @@ module OpenTelemetry
24
24
  SAMPLED_FLAG_BIT = 0x01
25
25
  DEBUG_FLAG_BIT = 0x02
26
26
  FIELDS = [IDENTITY_KEY].freeze
27
- TRACE_SPAN_IDENTITY_REGEX = /\A(?<trace_id>(?:[0-9a-f]){1,32}):(?<span_id>([0-9a-f]){1,16}):[0-9a-f]{1,16}:(?<sampling_flags>[0-9a-f]{1,2})\z/
27
+ TRACE_SPAN_IDENTITY_REGEX = /\A(?<trace_id>(?:[0-9a-f]){1,32}):(?<span_id>(?:[0-9a-f]){1,16}):(?:[0-9a-f]){1,16}:(?<sampling_flags>[0-9a-f]{1,2})\z/
28
28
  ZERO_ID_REGEX = /^0+$/
29
+ BAGGAGE_KEY_PREFIX = 'uberctx-'
30
+ MAX_BAGGAGE_ENTRIES = 180
31
+ MAX_BAGGAGE_ENTRY_BYTES = 4096
32
+ MAX_BAGGAGE_TOTAL_BYTES = 8192
29
33
 
30
- private_constant \
31
- :IDENTITY_KEY, :DEFAULT_FLAG_BIT, :SAMPLED_FLAG_BIT, :DEBUG_FLAG_BIT,
32
- :FIELDS, :TRACE_SPAN_IDENTITY_REGEX, :ZERO_ID_REGEX
34
+ private_constant :IDENTITY_KEY, :DEFAULT_FLAG_BIT, :SAMPLED_FLAG_BIT, :DEBUG_FLAG_BIT, :FIELDS,
35
+ :TRACE_SPAN_IDENTITY_REGEX, :ZERO_ID_REGEX, :BAGGAGE_KEY_PREFIX,
36
+ :MAX_BAGGAGE_ENTRIES, :MAX_BAGGAGE_ENTRY_BYTES, :MAX_BAGGAGE_TOTAL_BYTES
33
37
 
34
38
  # Extract trace context from the supplied carrier.
35
39
  # If extraction fails, the original context will be returned
@@ -73,11 +77,7 @@ module OpenTelemetry
73
77
  span_context.hex_trace_id, span_context.hex_span_id, '0', flags
74
78
  ].join(':')
75
79
  setter.set(carrier, IDENTITY_KEY, trace_span_identity_value)
76
- OpenTelemetry::Baggage.values(context: context).each do |key, value|
77
- baggage_key = 'uberctx-' + key
78
- encoded_value = URI.encode_uri_component(value)
79
- setter.set(carrier, baggage_key, encoded_value)
80
- end
80
+ inject_baggage(carrier, context, setter)
81
81
  carrier
82
82
  end
83
83
 
@@ -102,20 +102,49 @@ module OpenTelemetry
102
102
  OpenTelemetry::Trace.non_recording_span(span_context)
103
103
  end
104
104
 
105
+ def inject_baggage(carrier, context, setter)
106
+ count = 0
107
+ total_bytes = 0
108
+ OpenTelemetry::Baggage.values(context: context).each do |key, value|
109
+ break unless count < MAX_BAGGAGE_ENTRIES
110
+
111
+ encoded_value = URI.encode_uri_component(value)
112
+ entry_bytes = key.to_s.bytesize + encoded_value.bytesize
113
+ next unless within_baggage_limits?(entry_bytes, total_bytes)
114
+
115
+ setter.set(carrier, "#{BAGGAGE_KEY_PREFIX}#{key}", encoded_value)
116
+ count += 1
117
+ total_bytes += entry_bytes
118
+ end
119
+ end
120
+
105
121
  def context_with_extracted_baggage(carrier, context, getter)
106
- baggage_key_prefix = 'uberctx-'
107
122
  OpenTelemetry::Baggage.build(context: context) do |b|
123
+ count = 0
124
+ total_bytes = 0
108
125
  getter.keys(carrier).each do |carrier_key|
109
- baggage_key = carrier_key.start_with?(baggage_key_prefix) && carrier_key[baggage_key_prefix.length..-1]
126
+ break unless count < MAX_BAGGAGE_ENTRIES
127
+
128
+ baggage_key = carrier_key.start_with?(BAGGAGE_KEY_PREFIX) && carrier_key[BAGGAGE_KEY_PREFIX.length..]
110
129
  next unless baggage_key
111
130
 
112
131
  raw_value = getter.get(carrier, carrier_key)
113
- value = URI.decode_uri_component(raw_value)
114
- b.set_value(baggage_key, value)
132
+ next unless raw_value
133
+
134
+ entry_bytes = baggage_key.bytesize + raw_value.bytesize
135
+ next unless within_baggage_limits?(entry_bytes, total_bytes)
136
+
137
+ b.set_value(baggage_key, URI.decode_uri_component(raw_value))
138
+ count += 1
139
+ total_bytes += entry_bytes
115
140
  end
116
141
  end
117
142
  end
118
143
 
144
+ def within_baggage_limits?(entry_bytes, total_bytes)
145
+ entry_bytes <= MAX_BAGGAGE_ENTRY_BYTES && total_bytes + entry_bytes <= MAX_BAGGAGE_TOTAL_BYTES
146
+ end
147
+
119
148
  def to_jaeger_flags(context, span_context)
120
149
  if span_context.trace_flags == Trace::TraceFlags::SAMPLED
121
150
  if Jaeger.debug?(context)
@@ -129,7 +158,7 @@ module OpenTelemetry
129
158
  end
130
159
 
131
160
  def to_trace_flags(sampling_flags)
132
- if (sampling_flags & SAMPLED_FLAG_BIT) != 0
161
+ if sampling_flags.anybits?(SAMPLED_FLAG_BIT)
133
162
  Trace::TraceFlags::SAMPLED
134
163
  else
135
164
  Trace::TraceFlags::DEFAULT
@@ -7,7 +7,7 @@
7
7
  module OpenTelemetry
8
8
  module Propagator
9
9
  module Jaeger
10
- VERSION = '0.25.0'
10
+ VERSION = '0.25.2'
11
11
  end
12
12
  end
13
13
  end
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
7
- require_relative './jaeger/text_map_propagator'
7
+ require_relative 'jaeger/text_map_propagator'
8
8
 
9
9
  # OpenTelemetry is an open source observability framework, providing a
10
10
  # general-purpose API, SDK, and related tools required for the instrumentation
@@ -5,4 +5,4 @@
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
 
7
7
  require 'opentelemetry-api'
8
- require_relative './opentelemetry/propagator/jaeger'
8
+ require_relative 'opentelemetry/propagator/jaeger'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentelemetry-propagator-jaeger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.25.0
4
+ version: 0.25.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenTelemetry Authors
@@ -23,104 +23,6 @@ dependencies:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
25
  version: '1.1'
26
- - !ruby/object:Gem::Dependency
27
- name: minitest
28
- requirement: !ruby/object:Gem::Requirement
29
- requirements:
30
- - - "~>"
31
- - !ruby/object:Gem::Version
32
- version: '5.0'
33
- type: :development
34
- prerelease: false
35
- version_requirements: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '5.0'
40
- - !ruby/object:Gem::Dependency
41
- name: opentelemetry-sdk
42
- requirement: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: '1.2'
47
- type: :development
48
- prerelease: false
49
- version_requirements: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '1.2'
54
- - !ruby/object:Gem::Dependency
55
- name: rake
56
- requirement: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: '13.3'
61
- type: :development
62
- prerelease: false
63
- version_requirements: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '13.3'
68
- - !ruby/object:Gem::Dependency
69
- name: rubocop
70
- requirement: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '1.65'
75
- type: :development
76
- prerelease: false
77
- version_requirements: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '1.65'
82
- - !ruby/object:Gem::Dependency
83
- name: simplecov
84
- requirement: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: 0.22.0
89
- type: :development
90
- prerelease: false
91
- version_requirements: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: 0.22.0
96
- - !ruby/object:Gem::Dependency
97
- name: yard
98
- requirement: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '0.9'
103
- type: :development
104
- prerelease: false
105
- version_requirements: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: '0.9'
110
- - !ruby/object:Gem::Dependency
111
- name: yard-doctest
112
- requirement: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: 0.1.6
117
- type: :development
118
- prerelease: false
119
- version_requirements: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: 0.1.6
124
26
  description: Jaeger Context Propagation Extension for the OpenTelemetry framework
125
27
  email:
126
28
  - cncf-opentelemetry-contributors@lists.cncf.io
@@ -140,10 +42,10 @@ homepage: https://github.com/open-telemetry/opentelemetry-ruby
140
42
  licenses:
141
43
  - Apache-2.0
142
44
  metadata:
143
- changelog_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-propagator-jaeger/v0.25.0/file.CHANGELOG.html
144
- source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/opentelemetry-propagator-jaeger/v0.25.0/propagator/jaeger
45
+ changelog_uri: https://rubydoc.info/gems/opentelemetry-propagator-jaeger/0.25.2/file/CHANGELOG.md
46
+ source_code_uri: https://github.com/open-telemetry/opentelemetry-ruby/tree/opentelemetry-propagator-jaeger/v0.25.2/propagator/jaeger
145
47
  bug_tracker_uri: https://github.com/open-telemetry/opentelemetry-ruby/issues
146
- documentation_uri: https://open-telemetry.github.io/opentelemetry-ruby/opentelemetry-propagator-jaeger/v0.25.0
48
+ documentation_uri: https://rubydoc.info/gems/opentelemetry-propagator-jaeger/0.25.2
147
49
  rdoc_options: []
148
50
  require_paths:
149
51
  - lib
@@ -158,7 +60,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
60
  - !ruby/object:Gem::Version
159
61
  version: '0'
160
62
  requirements: []
161
- rubygems_version: 4.0.6
63
+ rubygems_version: 4.0.16
162
64
  specification_version: 4
163
65
  summary: Jaeger Context Propagation Extension for the OpenTelemetry framework
164
66
  test_files: []