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 +4 -4
- data/CHANGELOG.rdoc +6 -0
- data/lib/raygun/apm/sidekiq/middleware.rb +19 -23
- data/lib/raygun/apm/sidekiq/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ada58e6aa2ff6b48c268217c38693cac278aa306f682eb2dc69f73edb53b3b2e
|
4
|
+
data.tar.gz: 379565ec5a6a69f2f1f895bdbe60c7506a6eccd7cc913a773591021bb8a44003
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bba188aa02c29dea66a6e8936da18a744328fa583e848aebb7fa37a524a0d79ba726b675106663c707252bf4b2179a288e7ec3f3149ee2426aeee0b65f8b0906
|
7
|
+
data.tar.gz: e9302fe170f3eb1b848303908399b5e9b507dcd6234cda89157eb0ccd0594ec95fdc7551385cbbb676050c0c32247d50595c781a39f31a7f514a9d0e9bb2877d
|
data/CHANGELOG.rdoc
ADDED
@@ -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
|
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
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
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
|
-
|
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
|
-
|
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 =
|
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] =
|
69
|
-
event[:tid] =
|
70
|
-
|
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] =
|
107
|
-
|
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)
|
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.
|
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-
|
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
|