sentry-opentelemetry 5.7.0 → 5.8.0

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: 9aaffd9cda5f20379323be1ae47da2e64bc2ec9c1b27d514982925391c9b38c8
4
- data.tar.gz: 7e4c3b121b94781318c914ee60f107bd371084edf77e438c14eab736278d02b3
3
+ metadata.gz: 37320f3a7032a8665fcbcf74cfc47b8cf5e9a52583827f682df55acb11f51411
4
+ data.tar.gz: 56975c8e8db60b5d942f0cf3ee61bc737e2b6749914586b0d76d9f5c1253102e
5
5
  SHA512:
6
- metadata.gz: eda20f66ce75fd0e1457338d6bde1790f473b201801f93e4a81f998c9391c2f3d1a1e55f5702cc079914c05bd0ef613a95f917deea0bf5c8257c2bdbd5707edc
7
- data.tar.gz: e8c7c44bcf9efac91692055bd9376cbe5f6ec36e8000f97f96bc32b08fe0a233caa5665e4ea0fd19d357ca9ece6ab177abc763a87284cf03d31de277dc154296
6
+ metadata.gz: bd069ea72e3c4cb0fd52374f15fdb484b9afb6acee7b92790ccdbdc469e3660f08e495ac7020c7aefef29090594cc69c49c8400504c7b2a720e32d11e9a0b147
7
+ data.tar.gz: 777ce885fa8019b6ce1817b87d243d24400e925f2b455628fcb3563711860701fc2dfae86996a4aa7786e672fcc0c8d1b7b2fdb5048734f6c95b3f0aca0d3ba4
@@ -18,6 +18,7 @@ module Sentry
18
18
 
19
19
  def initialize
20
20
  @span_map = {}
21
+ setup_event_processor
21
22
  end
22
23
 
23
24
  def on_start(otel_span, parent_context)
@@ -60,11 +61,8 @@ module Sentry
60
61
  sentry_span = @span_map.delete(otel_span.context.hex_span_id)
61
62
  return unless sentry_span
62
63
 
63
- sentry_span.set_op(otel_span.name)
64
-
65
64
  if sentry_span.is_a?(Sentry::Transaction)
66
- sentry_span.set_name(otel_span.name)
67
- sentry_span.set_context(:otel, otel_context_hash(otel_span))
65
+ update_transaction_with_otel_data(sentry_span, otel_span)
68
66
  else
69
67
  update_span_with_otel_data(sentry_span, otel_span)
70
68
  end
@@ -123,10 +121,7 @@ module Sentry
123
121
  otel_context
124
122
  end
125
123
 
126
- def update_span_with_otel_data(sentry_span, otel_span)
127
- sentry_span.set_data('otel.kind', otel_span.kind)
128
- otel_span.attributes&.each { |k, v| sentry_span.set_data(k, v) }
129
-
124
+ def parse_span_description(otel_span)
130
125
  op = otel_span.name
131
126
  description = otel_span.name
132
127
 
@@ -139,9 +134,6 @@ module Sentry
139
134
 
140
135
  target = otel_span.attributes[SEMANTIC_CONVENTIONS::HTTP_TARGET]
141
136
  description += target if target
142
-
143
- status_code = otel_span.attributes[SEMANTIC_CONVENTIONS::HTTP_STATUS_CODE]
144
- sentry_span.set_http_status(status_code) if status_code
145
137
  elsif otel_span.attributes[SEMANTIC_CONVENTIONS::DB_SYSTEM]
146
138
  op = "db"
147
139
 
@@ -149,9 +141,49 @@ module Sentry
149
141
  description = statement if statement
150
142
  end
151
143
 
144
+ [op, description]
145
+ end
146
+
147
+ def update_span_status(sentry_span, otel_span)
148
+ if (http_status_code = otel_span.attributes[SEMANTIC_CONVENTIONS::HTTP_STATUS_CODE])
149
+ sentry_span.set_http_status(http_status_code)
150
+ elsif (status_code = otel_span.status.code)
151
+ status = [0, 1].include?(status_code) ? 'ok' : 'unknown_error'
152
+ sentry_span.set_status(status)
153
+ end
154
+ end
155
+
156
+ def update_span_with_otel_data(sentry_span, otel_span)
157
+ update_span_status(sentry_span, otel_span)
158
+ sentry_span.set_data('otel.kind', otel_span.kind)
159
+ otel_span.attributes&.each { |k, v| sentry_span.set_data(k, v) }
160
+
161
+ op, description = parse_span_description(otel_span)
152
162
  sentry_span.set_op(op)
153
163
  sentry_span.set_description(description)
154
164
  end
165
+
166
+ def update_transaction_with_otel_data(transaction, otel_span)
167
+ update_span_status(transaction, otel_span)
168
+ transaction.set_context(:otel, otel_context_hash(otel_span))
169
+
170
+ op, _ = parse_span_description(otel_span)
171
+ transaction.set_op(op)
172
+ transaction.set_name(otel_span.name)
173
+ end
174
+
175
+ def setup_event_processor
176
+ Sentry.add_global_event_processor do |event, _hint|
177
+ span_context = ::OpenTelemetry::Trace.current_span.context
178
+ next event unless span_context.valid?
179
+
180
+ sentry_span = @span_map[span_context.hex_span_id]
181
+ next event unless sentry_span
182
+
183
+ event.contexts[:trace] ||= sentry_span.get_trace_context
184
+ event
185
+ end
186
+ end
155
187
  end
156
188
  end
157
189
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sentry
4
4
  module OpenTelemetry
5
- VERSION = "5.7.0"
5
+ VERSION = "5.8.0"
6
6
  end
7
7
  end
@@ -24,6 +24,6 @@ Gem::Specification.new do |spec|
24
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
25
  spec.require_paths = ["lib"]
26
26
 
27
- spec.add_dependency "sentry-ruby", "~> 5.7.0"
27
+ spec.add_dependency "sentry-ruby", "~> 5.8.0"
28
28
  spec.add_dependency "opentelemetry-sdk", "~> 1.0"
29
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sentry-opentelemetry
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.7.0
4
+ version: 5.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sentry Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-12-01 00:00:00.000000000 Z
11
+ date: 2023-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sentry-ruby
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 5.7.0
19
+ version: 5.8.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 5.7.0
26
+ version: 5.8.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: opentelemetry-sdk
29
29
  requirement: !ruby/object:Gem::Requirement