scout_apm 5.4.0 → 5.5.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 +4 -4
- data/.github/workflows/test.yml +4 -9
- data/CHANGELOG.markdown +6 -1
- data/gems/{sqlite3-1.3.gemfile → sqlite3-v2.gemfile} +1 -1
- data/lib/scout_apm/agent.rb +1 -1
- data/lib/scout_apm/background_job_integrations/resque.rb +13 -27
- data/lib/scout_apm/instruments/grape.rb +1 -1
- data/lib/scout_apm/instruments/resque.rb +31 -2
- data/lib/scout_apm/utils/installed_gems.rb +2 -1
- data/lib/scout_apm/version.rb +1 -1
- metadata +4 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3dfd72cdc46892ac46a974e4e3947f81ac2ee6580bee96c0cc6ad845ce50ee7
|
4
|
+
data.tar.gz: 560fb31452b8c5b526bf77723d121d561096c759640c0266ba894ffe71901d99
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3958265f12804e22dbb4c75d3b03a6d4ad9f87ff989e5382f8d0b890d55c2c2505828cd4022fa7a965092bb7c0948a12baea760b0d15fd05f5ceef6d1a23f962
|
7
|
+
data.tar.gz: cb45c1255f16f299e7a8cc67c93efd21fd7912682c4d4ed2030498be069022f2cf8811a987bbec0c22ff28150d57ff95222ed0771e0c2758bbba057b1805d4a8
|
data/.github/workflows/test.yml
CHANGED
@@ -19,13 +19,6 @@ jobs:
|
|
19
19
|
fail-fast: false
|
20
20
|
matrix:
|
21
21
|
include:
|
22
|
-
- ruby: 2.1
|
23
|
-
gemfile: gems/rails3.gemfile
|
24
|
-
- ruby: 2.2
|
25
|
-
- ruby: 2.3
|
26
|
-
gemfile: gems/sqlite3-1.3.gemfile
|
27
|
-
- ruby: 2.4
|
28
|
-
gemfile: gems/sqlite3-1.3.gemfile
|
29
22
|
- ruby: 2.5
|
30
23
|
- ruby: 2.6
|
31
24
|
- ruby: 2.6
|
@@ -51,13 +44,15 @@ jobs:
|
|
51
44
|
test_features: "sidekiq_install"
|
52
45
|
- ruby: 3.1
|
53
46
|
- ruby: 3.2
|
47
|
+
gemfile: gems/sqlite3-v2.gemfile
|
48
|
+
- ruby: 3.3
|
49
|
+
gemfile: gems/sqlite3-v2.gemfile
|
54
50
|
env:
|
55
51
|
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
|
56
52
|
SCOUT_TEST_FEATURES: ${{ matrix.test_features }}
|
57
53
|
SCOUT_USE_PREPEND: ${{ matrix.prepend }}
|
58
54
|
|
59
|
-
|
60
|
-
runs-on: ${{ matrix.ruby == '2.2' && 'ubuntu-20.04' || 'ubuntu-latest' }}
|
55
|
+
runs-on: ubuntu-latest
|
61
56
|
|
62
57
|
steps:
|
63
58
|
- uses: actions/checkout@v4
|
data/CHANGELOG.markdown
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# Unreleased
|
2
2
|
|
3
|
+
# 5.5.0
|
4
|
+
- Fix undeclared logger in grape instruments (#510)
|
5
|
+
- Drop guaranteed support for Rubies <= 2.4
|
6
|
+
- Instrument Resque without relying on forking per job (#514)
|
7
|
+
|
3
8
|
# 5.4.0
|
4
9
|
* Add support for GoodJob (#506)
|
5
10
|
* Add support for Solid Queue (#508)
|
@@ -668,7 +673,7 @@ reusing that version number to avoid confusion.
|
|
668
673
|
|
669
674
|
# 1.2.12
|
670
675
|
|
671
|
-
* Add uri_reporting option to report bare path (as opposed to fullpath). Default is 'fullpath'; set to 'path' to avoid exposing URL parameters.
|
676
|
+
* Add uri_reporting option to report bare path (as opposed to fullpath). Default is 'fullpath'; set to 'path' to avoid exposing URL parameters.
|
672
677
|
|
673
678
|
# 1.2.11
|
674
679
|
|
data/lib/scout_apm/agent.rb
CHANGED
@@ -208,7 +208,7 @@ module ScoutApm
|
|
208
208
|
|
209
209
|
@error_service_background_worker = ScoutApm::BackgroundWorker.new(context, ERROR_SEND_FREQUENCY)
|
210
210
|
@error_service_background_worker_thread = Thread.new do
|
211
|
-
@error_service_background_worker.start {
|
211
|
+
@error_service_background_worker.start {
|
212
212
|
periodic_work.run
|
213
213
|
}
|
214
214
|
end
|
@@ -7,8 +7,7 @@ module ScoutApm
|
|
7
7
|
|
8
8
|
def present?
|
9
9
|
defined?(::Resque) &&
|
10
|
-
::Resque.respond_to?(:before_first_fork)
|
11
|
-
::Resque.respond_to?(:after_fork)
|
10
|
+
::Resque.respond_to?(:before_first_fork)
|
12
11
|
end
|
13
12
|
|
14
13
|
# Lies. This forks really aggressively, but we have to do handling
|
@@ -19,13 +18,14 @@ module ScoutApm
|
|
19
18
|
end
|
20
19
|
|
21
20
|
def install
|
22
|
-
|
23
|
-
|
21
|
+
install_before_first_fork
|
22
|
+
install_instruments
|
24
23
|
end
|
25
24
|
|
26
|
-
def
|
25
|
+
def install_before_first_fork
|
27
26
|
::Resque.before_first_fork do
|
28
27
|
begin
|
28
|
+
# Don't check fork_per_job here in case some workers fork_per_job and some don't.
|
29
29
|
if ScoutApm::Agent.instance.context.config.value('start_resque_server_instrument')
|
30
30
|
ScoutApm::Agent.instance.start
|
31
31
|
ScoutApm::Agent.instance.context.start_remote_server!(bind, port)
|
@@ -33,31 +33,14 @@ module ScoutApm
|
|
33
33
|
logger.info("Not starting remote server due to 'start_resque_server_instrument' setting")
|
34
34
|
end
|
35
35
|
rescue Errno::EADDRINUSE
|
36
|
-
|
36
|
+
logger.warn "Error while Installing Resque Instruments, Port #{port} already in use. Set via the `remote_agent_port` configuration option"
|
37
37
|
rescue => e
|
38
|
-
|
38
|
+
logger.warn "Error while Installing Resque before_first_fork: #{e.inspect}"
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
def
|
44
|
-
::Resque.after_fork do
|
45
|
-
begin
|
46
|
-
ScoutApm::Agent.instance.context.become_remote_client!(bind, port)
|
47
|
-
inject_job_instrument
|
48
|
-
rescue => e
|
49
|
-
ScoutApm::Agent.instance.context.logger.warn "Error while Installing Resque after_fork: #{e.inspect}"
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
# Insert ourselves into the point when resque turns a string "TestJob"
|
55
|
-
# into the class constant TestJob, and insert our instrumentation plugin
|
56
|
-
# into that constantized class
|
57
|
-
#
|
58
|
-
# This automates away any need for the user to insert our instrumentation into
|
59
|
-
# each of their jobs
|
60
|
-
def inject_job_instrument
|
43
|
+
def install_instruments
|
61
44
|
::Resque::Job.class_eval do
|
62
45
|
def payload_class_with_scout_instruments
|
63
46
|
klass = payload_class_without_scout_instruments
|
@@ -80,9 +63,12 @@ module ScoutApm
|
|
80
63
|
end
|
81
64
|
|
82
65
|
def config
|
83
|
-
@config
|
66
|
+
@config ||= ScoutApm::Agent.instance.context.config
|
67
|
+
end
|
68
|
+
|
69
|
+
def logger
|
70
|
+
@logger ||= ScoutApm::Agent.instance.context.logger
|
84
71
|
end
|
85
72
|
end
|
86
73
|
end
|
87
74
|
end
|
88
|
-
|
@@ -53,7 +53,7 @@ module ScoutApm
|
|
53
53
|
self.options[:path].first,
|
54
54
|
].compact.map{ |n| n.to_s }.join("/")
|
55
55
|
rescue => e
|
56
|
-
logger.info("Error getting Grape Endpoint Name. Error: #{e.message}. Options: #{self.options.inspect}")
|
56
|
+
ScoutApm::Agent.instance.context.logger.info("Error getting Grape Endpoint Name. Error: #{e.message}. Options: #{self.options.inspect}")
|
57
57
|
name = "Grape/Unknown"
|
58
58
|
end
|
59
59
|
|
@@ -1,6 +1,15 @@
|
|
1
1
|
module ScoutApm
|
2
2
|
module Instruments
|
3
3
|
module Resque
|
4
|
+
def before_perform_become_client(*args)
|
5
|
+
# Don't become remote client if explicitly disabled or if forking is disabled to force synchronous recording.
|
6
|
+
if config.value('start_resque_server_instrument') && forking?
|
7
|
+
ScoutApm::Agent.instance.context.become_remote_client!(bind, port)
|
8
|
+
else
|
9
|
+
logger.debug("Not becoming remote client due to 'start_resque_server_instrument' setting or 'fork_per_job' setting")
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
4
13
|
def around_perform_with_scout_instruments(*args)
|
5
14
|
job_name = self.to_s
|
6
15
|
queue = find_queue
|
@@ -17,7 +26,6 @@ module ScoutApm
|
|
17
26
|
started_queue = true
|
18
27
|
req.start_layer(ScoutApm::Layer.new('Job', job_name))
|
19
28
|
started_job = true
|
20
|
-
|
21
29
|
yield
|
22
30
|
rescue => e
|
23
31
|
req.error!
|
@@ -33,7 +41,28 @@ module ScoutApm
|
|
33
41
|
return queue if self.respond_to?(:queue)
|
34
42
|
return "unknown"
|
35
43
|
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def bind
|
48
|
+
config.value("remote_agent_host")
|
49
|
+
end
|
50
|
+
|
51
|
+
def port
|
52
|
+
config.value("remote_agent_port")
|
53
|
+
end
|
54
|
+
|
55
|
+
def config
|
56
|
+
@config ||= ScoutApm::Agent.instance.context.config
|
57
|
+
end
|
58
|
+
|
59
|
+
def logger
|
60
|
+
@logger ||= ScoutApm::Agent.instance.context.logger
|
61
|
+
end
|
62
|
+
|
63
|
+
def forking?
|
64
|
+
@forking ||= ENV["FORK_PER_JOB"] != "false"
|
65
|
+
end
|
36
66
|
end
|
37
67
|
end
|
38
68
|
end
|
39
|
-
|
@@ -12,7 +12,8 @@ module ScoutApm
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def run
|
15
|
-
Bundler.rubygems.
|
15
|
+
specs = Bundler.rubygems.public_send(Bundler.rubygems.respond_to?(:installed_specs) ? :installed_specs : :all_specs)
|
16
|
+
specs.map { |spec| [spec.name, spec.version.to_s] }
|
16
17
|
rescue => e
|
17
18
|
logger.warn("Couldn't fetch Gem information: #{e.message}")
|
18
19
|
[]
|
data/lib/scout_apm/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scout_apm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Derek Haynes
|
8
8
|
- Andre Lewis
|
9
|
-
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2025-01-02 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: minitest
|
@@ -240,7 +239,7 @@ files:
|
|
240
239
|
- gems/rails5.gemfile
|
241
240
|
- gems/rails6.gemfile
|
242
241
|
- gems/sidekiq.gemfile
|
243
|
-
- gems/sqlite3-
|
242
|
+
- gems/sqlite3-v2.gemfile
|
244
243
|
- gems/typhoeus.gemfile
|
245
244
|
- lib/scout_apm.rb
|
246
245
|
- lib/scout_apm/agent.rb
|
@@ -489,7 +488,6 @@ homepage: https://github.com/scoutapp/scout_apm_ruby
|
|
489
488
|
licenses:
|
490
489
|
- MIT
|
491
490
|
metadata: {}
|
492
|
-
post_install_message:
|
493
491
|
rdoc_options: []
|
494
492
|
require_paths:
|
495
493
|
- lib
|
@@ -505,8 +503,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
505
503
|
- !ruby/object:Gem::Version
|
506
504
|
version: '0'
|
507
505
|
requirements: []
|
508
|
-
rubygems_version: 3.
|
509
|
-
signing_key:
|
506
|
+
rubygems_version: 3.6.2
|
510
507
|
specification_version: 4
|
511
508
|
summary: Ruby application performance monitoring
|
512
509
|
test_files: []
|