raygun-apm-sidekiq 1.0.10 → 1.0.11

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: 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