raygun-apm-sidekiq 1.0.10 → 1.0.11

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: 5d47af0b57af919bbbcfd30f03f6170f48544ea379f3a112504b77b04a21f728
4
- data.tar.gz: 768d91496b52936ecab2582091943b997768922ce196ebba17c33ffbc1c5edb0
3
+ metadata.gz: ada58e6aa2ff6b48c268217c38693cac278aa306f682eb2dc69f73edb53b3b2e
4
+ data.tar.gz: 379565ec5a6a69f2f1f895bdbe60c7506a6eccd7cc913a773591021bb8a44003
5
5
  SHA512:
6
- metadata.gz: 46eddc75761d8f7acf5ce5089ac33c340aaac03b915804237bba61ae19e594c0c56cca68bc504304ddcaa2005f900232a09b6d4b61b8fc150af7119ab0ed77f2
7
- data.tar.gz: e0a2196341004b863bc00966e86ea7bd8b7c52cdab655c1c9002277f41f896e12e5bd41ba85418bcd4adadf5ef3e64c5b95630a402f5834409ffe55aa0b2904b
6
+ metadata.gz: bba188aa02c29dea66a6e8936da18a744328fa583e848aebb7fa37a524a0d79ba726b675106663c707252bf4b2179a288e7ec3f3149ee2426aeee0b65f8b0906
7
+ data.tar.gz: e9302fe170f3eb1b848303908399b5e9b507dcd6234cda89157eb0ccd0594ec95fdc7551385cbbb676050c0c32247d50595c781a39f31a7f514a9d0e9bb2877d
@@ -0,0 +1,6 @@
1
+ = Changelog
2
+
3
+ == 1.0.11 (March 15, 2020)
4
+
5
+ * Emit the happy path and error state HTTP IN events for Sidekiq jobs WITHIN the entrypoint function for the agent to pick it up
6
+ * Prefer the singleton interface on the Tracer
@@ -3,27 +3,24 @@ module Raygun
3
3
  module Sidekiq
4
4
  class Middleware
5
5
  def initialize
6
- @tracer = self.class.init_tracer
6
+ @tracer = Raygun::Apm::Tracer.instance || self.class.init_tracer
7
7
  end
8
8
 
9
9
  def call(worker_instance, msg, queue)
10
10
  # Can be nil if we had a fatal error
11
11
  if @tracer
12
12
  started = @tracer.now
13
- Thread.current.thread_variable_set(:_raygun_apm_tracer, @tracer)
14
13
  @tracer.start_trace
15
14
  end
16
15
  exception = nil
17
16
  Ruby_APM_profiler_trace do
18
17
  yield
18
+ self.class.fake_http_in_handler(@tracer, started, worker_instance, msg, queue, nil) if @tracer
19
19
  rescue => e
20
- exception = e
20
+ self.class.fake_http_in_handler(@tracer, started, worker_instance, msg, queue, exception) if @tracer
21
21
  end
22
22
  # Can be nil if we had a fatal error
23
- if @tracer
24
- self.class.fake_http_in_handler(started, worker_instance, msg, queue, exception)
25
- @tracer.end_trace
26
- end
23
+ @tracer.end_trace if @tracer
27
24
  rescue Raygun::Apm::FatalError => e
28
25
  self.class.raygun_shutdown_handler(e)
29
26
  end
@@ -31,18 +28,17 @@ module Raygun
31
28
  private
32
29
 
33
30
  def self.init_tracer
34
- return @tracer if @tracer
35
- @tracer = Raygun::Apm::Tracer.new
36
- @tracer.udp_sink!
37
- @tracer.process_started
38
- ObjectSpace.define_finalizer(self, self.finalize(@tracer))
31
+ tracer = Raygun::Apm::Tracer.new
32
+ tracer.udp_sink!
33
+ tracer.process_started
34
+ ObjectSpace.define_finalizer(self, self.finalize(tracer))
39
35
 
40
36
  @sql_subscriber = ActiveSupport::Notifications.subscribe('sql.active_record') do |*args|
41
- sql_handler(args)
37
+ sql_handler(tracer, args)
42
38
  end
43
39
 
44
40
  GC.stress = true if ENV['RAYGUN_STRESS_GC']
45
- @tracer
41
+ Raygun::Apm::Tracer.instance = tracer
46
42
  # If any fatal errors on init, shutdown the tracer
47
43
  rescue Raygun::Apm::FatalError => e
48
44
  raygun_shutdown_handler(e)
@@ -55,19 +51,19 @@ module Raygun
55
51
  warn "[Raygun APM] notification hooks unsubscribed"
56
52
  # Let the GC clean up the sink thread through the finalizer below
57
53
  @tracer = nil
58
- Thread.current.thread_variable_set(:_raygun_apm_tracer, nil)
54
+ Raygun::Apm::Tracer.instance = nil
59
55
  raise(exception) unless (Raygun::Apm::FatalError === exception)
60
56
  end
61
57
 
62
- def self.fake_http_in_handler(started, worker_instance, msg, queue, exception)
63
- ended = @tracer.now
58
+ def self.fake_http_in_handler(tracer, started, worker_instance, msg, queue, exception)
59
+ ended = tracer.now
64
60
  event = http_in_event
65
61
  event[:url] = "sidekiq://#{queue}/#{msg["class"]}?#{msg["jid"]}"
66
62
  event[:status] = exception ? 500 : 200
67
63
  event[:duration] = ended - started
68
- event[:timestamp] = @tracer.now
69
- event[:tid] = @tracer.get_thread_id(Thread.current)
70
- @tracer.emit(event)
64
+ event[:timestamp] = tracer.now
65
+ event[:tid] = tracer.get_thread_id(Thread.current)
66
+ tracer.emit(event)
71
67
  raise(exception) if exception
72
68
  rescue => e
73
69
  warn "[Raygun APM] error reporting HTTP IN event"
@@ -83,7 +79,7 @@ module Raygun
83
79
  end
84
80
  end
85
81
 
86
- def self.sql_handler(args)
82
+ def self.sql_handler(tracer, args)
87
83
  notification = ActiveSupport::Notifications::Event.new *args
88
84
  connection = if notification.payload[:connection]
89
85
  notification.payload[:connection]
@@ -103,8 +99,8 @@ module Raygun
103
99
  # XXX constant milliseconds to microseconds
104
100
  event[:duration] = notification.duration * 1000
105
101
  event[:timestamp] = notification.time.to_f * 1000000
106
- event[:tid] = @tracer.get_thread_id(Thread.current)
107
- @tracer.emit(event)
102
+ event[:tid] = tracer.get_thread_id(Thread.current)
103
+ tracer.emit(event)
108
104
  rescue => e
109
105
  warn "[Raygun APM] error reporting SQL event"
110
106
  raygun_shutdown_handler(e)
@@ -1,7 +1,7 @@
1
1
  module Raygun
2
2
  module Apm
3
3
  module Sidekiq
4
- VERSION = "1.0.10"
4
+ VERSION = "1.0.11"
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: raygun-apm-sidekiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.10
4
+ version: 1.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Raygun
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-03-09 00:00:00.000000000 Z
12
+ date: 2020-03-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: raygun-apm
@@ -75,6 +75,7 @@ executables: []
75
75
  extensions: []
76
76
  extra_rdoc_files: []
77
77
  files:
78
+ - CHANGELOG.rdoc
78
79
  - Gemfile
79
80
  - Gemfile.lock
80
81
  - README.rdoc