sentry-sidekiq 5.21.0 → 5.22.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: 5632cc22a856b3c11f324b13fc999f51ed2290add13636bdca2510c2574fccc0
4
- data.tar.gz: 100fee7c3cc7f38c9272be199f4f9c801bfd1f1afc2af02463667997a28c8c08
3
+ metadata.gz: 83fbb1f91441c9adf737eaf26f68e5161de49eaf18cbcfb3f64ca104f1de4076
4
+ data.tar.gz: eb15ed9917c8677b982bfa5a81a080b80da54084051a5975ff0b678175ee0a38
5
5
  SHA512:
6
- metadata.gz: a1cc6a6ec0f6e4ff1bb3ac0d7b166471f71328168b2d480d136c79aea5a51dabcb3e70979a02578c602693f5ac1e324704941648c53a3902154a15549c9fef4d
7
- data.tar.gz: a1e9634862f76c9ea3216cd8b8e726f245eeb6a2f6db0d7b3e8683320545e468eea5cc7f537e427a028391fc807c6d489650616a61782a6718de0482f79d9111
6
+ metadata.gz: 54831f113983325cc42c0e6bdf1765a01b1bf7769cade041270ab3c0475bb14ef95ee71b6461cf95f4c1139f0cfeea82cab0c846b3a4dad6e814bfa4fec423bc
7
+ data.tar.gz: 4bf2ad8e03051cf927c5f11c404bfe0a93e2cc17fc91f10b0233da2d14dc36cef4f20cf1386b871dcce982a857c8c617441495ab4a20f8bca5a1c9f6f45ef96c
data/Gemfile CHANGED
@@ -12,9 +12,6 @@ gem "sentry-rails", path: "../sentry-rails"
12
12
  # loofah changed the required ruby version in a patch so we need to explicitly pin it
13
13
  gem "loofah", "2.20.0" if RUBY_VERSION.to_f < 2.5
14
14
 
15
- # For https://github.com/ruby/psych/issues/655
16
- gem "psych", "5.1.0"
17
-
18
15
  sidekiq_version = ENV["SIDEKIQ_VERSION"]
19
16
  sidekiq_version = "7.0" if sidekiq_version.nil?
20
17
  sidekiq_version = Gem::Version.new(sidekiq_version)
@@ -28,4 +25,6 @@ end
28
25
 
29
26
  gem "rails", "> 5.0.0"
30
27
 
28
+ gem "timecop"
29
+
31
30
  eval_gemfile File.expand_path("../Gemfile", __dir__)
data/Makefile CHANGED
@@ -1,7 +1,3 @@
1
1
  build:
2
2
  bundle install
3
3
  gem build sentry-sidekiq.gemspec
4
-
5
- test:
6
- WITH_SENTRY_RAILS=1 bundle exec rspec spec/sentry/rails_spec.rb
7
- bundle exec rspec
@@ -12,6 +12,32 @@ module Sentry
12
12
  module Sidekiq
13
13
  module Cron
14
14
  module Job
15
+ def self.enqueueing_method
16
+ ::Sidekiq::Cron::Job.instance_methods.include?(:enque!) ? :enque! : :enqueue!
17
+ end
18
+
19
+ define_method(enqueueing_method) do |*args|
20
+ # make sure the current thread has a clean hub
21
+ Sentry.clone_hub_to_current_thread
22
+
23
+ Sentry.with_scope do |scope|
24
+ Sentry.with_session_tracking do
25
+ begin
26
+ scope.set_transaction_name("#{name} (#{klass})")
27
+
28
+ transaction = start_transaction(scope)
29
+ scope.set_span(transaction) if transaction
30
+ super(*args)
31
+
32
+ finish_transaction(transaction, 200)
33
+ rescue
34
+ finish_transaction(transaction, 500)
35
+ raise
36
+ end
37
+ end
38
+ end
39
+ end
40
+
15
41
  def save
16
42
  # validation failed, do nothing
17
43
  return false unless super
@@ -34,6 +60,22 @@ module Sentry
34
60
 
35
61
  true
36
62
  end
63
+
64
+ def start_transaction(scope)
65
+ Sentry.start_transaction(
66
+ name: scope.transaction_name,
67
+ source: scope.transaction_source,
68
+ op: "queue.sidekiq-cron",
69
+ origin: "auto.queue.sidekiq.cron"
70
+ )
71
+ end
72
+
73
+ def finish_transaction(transaction, status_code)
74
+ return unless transaction
75
+
76
+ transaction.set_http_status(status_code)
77
+ transaction.finish
78
+ end
37
79
  end
38
80
  end
39
81
  end
@@ -4,11 +4,24 @@ require "sentry/sidekiq/context_filter"
4
4
 
5
5
  module Sentry
6
6
  module Sidekiq
7
+ module Helpers
8
+ def set_span_data(span, id:, queue:, latency: nil, retry_count: nil)
9
+ if span
10
+ span.set_data("messaging.message.id", id)
11
+ span.set_data("messaging.destination.name", queue)
12
+ span.set_data("messaging.message.receive.latency", latency) if latency
13
+ span.set_data("messaging.message.retry.count", retry_count) if retry_count
14
+ end
15
+ end
16
+ end
17
+
7
18
  class SentryContextServerMiddleware
8
- OP_NAME = "queue.sidekiq"
19
+ include Sentry::Sidekiq::Helpers
20
+
21
+ OP_NAME = "queue.process"
9
22
  SPAN_ORIGIN = "auto.queue.sidekiq"
10
23
 
11
- def call(_worker, job, queue)
24
+ def call(worker, job, queue)
12
25
  return yield unless Sentry.initialized?
13
26
 
14
27
  context_filter = Sentry::Sidekiq::ContextFilter.new(job)
@@ -23,7 +36,12 @@ module Sentry
23
36
  scope.set_contexts(sidekiq: job.merge("queue" => queue))
24
37
  scope.set_transaction_name(context_filter.transaction_name, source: :task)
25
38
  transaction = start_transaction(scope, job["trace_propagation_headers"])
26
- scope.set_span(transaction) if transaction
39
+
40
+ if transaction
41
+ scope.set_span(transaction)
42
+
43
+ set_span_data(transaction, id: job["jid"], queue: queue, latency: ((Time.now.to_f - job["enqueued_at"]) * 1000).to_i, retry_count: job["retry_count"] || 0)
44
+ end
27
45
 
28
46
  begin
29
47
  yield
@@ -63,13 +81,20 @@ module Sentry
63
81
  end
64
82
 
65
83
  class SentryContextClientMiddleware
66
- def call(_worker_class, job, _queue, _redis_pool)
84
+ include Sentry::Sidekiq::Helpers
85
+
86
+ def call(worker_class, job, queue, _redis_pool)
67
87
  return yield unless Sentry.initialized?
68
88
 
69
89
  user = Sentry.get_current_scope.user
70
90
  job["sentry_user"] = user unless user.empty?
71
91
  job["trace_propagation_headers"] ||= Sentry.get_trace_propagation_headers
72
- yield
92
+
93
+ Sentry.with_child_span(op: "queue.publish", description: worker_class.to_s) do |span|
94
+ set_span_data(span, id: job["jid"], queue: queue)
95
+
96
+ yield
97
+ end
73
98
  end
74
99
  end
75
100
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sentry
4
4
  module Sidekiq
5
- VERSION = "5.21.0"
5
+ VERSION = "5.22.0"
6
6
  end
7
7
  end
@@ -30,6 +30,6 @@ Gem::Specification.new do |spec|
30
30
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
31
  spec.require_paths = ["lib"]
32
32
 
33
- spec.add_dependency "sentry-ruby", "~> 5.21.0"
33
+ spec.add_dependency "sentry-ruby", "~> 5.22.0"
34
34
  spec.add_dependency "sidekiq", ">= 3.0"
35
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sentry-sidekiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.21.0
4
+ version: 5.22.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: 2024-10-07 00:00:00.000000000 Z
11
+ date: 2024-12-04 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.21.0
19
+ version: 5.22.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.21.0
26
+ version: 5.22.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sidekiq
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -69,15 +69,15 @@ files:
69
69
  - lib/sentry/sidekiq/sentry_context_middleware.rb
70
70
  - lib/sentry/sidekiq/version.rb
71
71
  - sentry-sidekiq.gemspec
72
- homepage: https://github.com/getsentry/sentry-ruby/tree/5.21.0/sentry-sidekiq
72
+ homepage: https://github.com/getsentry/sentry-ruby/tree/5.22.0/sentry-sidekiq
73
73
  licenses:
74
74
  - MIT
75
75
  metadata:
76
- homepage_uri: https://github.com/getsentry/sentry-ruby/tree/5.21.0/sentry-sidekiq
77
- source_code_uri: https://github.com/getsentry/sentry-ruby/tree/5.21.0/sentry-sidekiq
78
- changelog_uri: https://github.com/getsentry/sentry-ruby/blob/5.21.0/CHANGELOG.md
76
+ homepage_uri: https://github.com/getsentry/sentry-ruby/tree/5.22.0/sentry-sidekiq
77
+ source_code_uri: https://github.com/getsentry/sentry-ruby/tree/5.22.0/sentry-sidekiq
78
+ changelog_uri: https://github.com/getsentry/sentry-ruby/blob/5.22.0/CHANGELOG.md
79
79
  bug_tracker_uri: https://github.com/getsentry/sentry-ruby/issues
80
- documentation_uri: http://www.rubydoc.info/gems/sentry-sidekiq/5.21.0
80
+ documentation_uri: http://www.rubydoc.info/gems/sentry-sidekiq/5.22.0
81
81
  post_install_message:
82
82
  rdoc_options: []
83
83
  require_paths:
@@ -93,7 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
93
93
  - !ruby/object:Gem::Version
94
94
  version: '0'
95
95
  requirements: []
96
- rubygems_version: 3.5.16
96
+ rubygems_version: 3.5.22
97
97
  signing_key:
98
98
  specification_version: 4
99
99
  summary: A gem that provides Sidekiq integration for the Sentry error logger