sentry-opentelemetry 5.7.0 → 5.8.0

Sign up to get free protection for your applications and to get access to all the features.
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