appsignal 0.6.7 → 0.7.0.alpha.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/.gitignore +3 -2
- data/.travis.yml +11 -11
- data/CHANGELOG.md +6 -0
- data/README.md +26 -0
- data/Rakefile +32 -3
- data/appsignal.gemspec +25 -16
- data/gemfiles/no_dependencies.gemfile +3 -0
- data/gemfiles/{3.0.gemfile → rails-3.0.gemfile} +2 -1
- data/gemfiles/{3.1.gemfile → rails-3.1.gemfile} +2 -1
- data/gemfiles/{3.2.gemfile → rails-3.2.gemfile} +2 -1
- data/gemfiles/{4.0.gemfile → rails-4.0.gemfile} +2 -1
- data/gemfiles/sinatra.gemfile +5 -0
- data/lib/appsignal.rb +30 -25
- data/lib/appsignal/agent.rb +37 -17
- data/lib/appsignal/aggregator.rb +2 -4
- data/lib/appsignal/aggregator/middleware.rb +4 -0
- data/lib/appsignal/aggregator/middleware/action_view_sanitizer.rb +23 -0
- data/lib/appsignal/aggregator/middleware/active_record_sanitizer.rb +64 -0
- data/lib/appsignal/aggregator/middleware/chain.rb +101 -0
- data/lib/appsignal/aggregator/middleware/delete_blanks.rb +16 -0
- data/lib/appsignal/aggregator/post_processor.rb +21 -18
- data/lib/appsignal/auth_check.rb +7 -21
- data/lib/appsignal/capistrano.rb +1 -36
- data/lib/appsignal/cli.rb +30 -46
- data/lib/appsignal/config.rb +46 -61
- data/lib/appsignal/integrations/capistrano.rb +44 -0
- data/lib/appsignal/{careful_logger.rb → integrations/capistrano/careful_logger.rb} +2 -0
- data/lib/appsignal/integrations/passenger.rb +6 -6
- data/lib/appsignal/integrations/rails.rb +33 -0
- data/lib/appsignal/integrations/sinatra.rb +20 -0
- data/lib/appsignal/marker.rb +9 -10
- data/lib/appsignal/rack/instrumentation.rb +28 -0
- data/lib/appsignal/rack/listener.rb +33 -0
- data/lib/appsignal/transaction.rb +18 -12
- data/lib/appsignal/transaction/formatter.rb +96 -0
- data/lib/appsignal/transaction/params_sanitizer.rb +80 -78
- data/lib/appsignal/transmitter.rb +10 -9
- data/lib/appsignal/version.rb +1 -1
- data/lib/generators/appsignal/appsignal_generator.rb +20 -21
- data/lib/generators/appsignal/templates/appsignal.yml +15 -21
- data/spec/{appsignal → lib/appsignal}/agent_spec.rb +69 -1
- data/spec/lib/appsignal/aggregator/middleware/action_view_sanitizer_spec.rb +32 -0
- data/spec/lib/appsignal/aggregator/middleware/active_record_sanitizer_spec.rb +215 -0
- data/spec/{appsignal → lib/appsignal/aggregator}/middleware/chain_spec.rb +5 -5
- data/spec/{appsignal → lib/appsignal/aggregator}/middleware/delete_blanks_spec.rb +2 -2
- data/spec/{appsignal → lib/appsignal}/aggregator/post_processor_spec.rb +15 -6
- data/spec/{appsignal → lib/appsignal}/aggregator_spec.rb +4 -1
- data/spec/{appsignal → lib/appsignal}/auth_check_spec.rb +8 -23
- data/spec/{appsignal → lib/appsignal}/cli_spec.rb +65 -66
- data/spec/lib/appsignal/config_spec.rb +132 -0
- data/spec/lib/appsignal/integrations/capistrano_spec.rb +123 -0
- data/spec/{appsignal → lib/appsignal}/integrations/passenger_spec.rb +0 -1
- data/spec/lib/appsignal/integrations/rails_spec.rb +38 -0
- data/spec/lib/appsignal/integrations/sinatra_spec.rb +43 -0
- data/spec/{appsignal → lib/appsignal}/marker_spec.rb +20 -23
- data/spec/lib/appsignal/rack/instrumentation_spec.rb +49 -0
- data/spec/{appsignal → lib/appsignal/rack}/listener_spec.rb +39 -6
- data/spec/{appsignal/transaction/transaction_formatter_spec.rb → lib/appsignal/transaction/formatter_spec.rb} +29 -6
- data/spec/{appsignal → lib/appsignal}/transaction/params_sanitizer_spec.rb +13 -12
- data/spec/{appsignal → lib/appsignal}/transaction_spec.rb +52 -7
- data/spec/{appsignal → lib/appsignal}/transmitter_spec.rb +27 -20
- data/spec/lib/appsignal_spec.rb +230 -0
- data/spec/lib/generators/appsignal/appsignal_generator_spec.rb +166 -0
- data/spec/lib/tmp/config/appsignal.yml +2 -0
- data/spec/spec_helper.rb +29 -20
- data/spec/support/delegate_matcher.rb +0 -1
- data/spec/support/fixtures/generated_config.yml +20 -0
- data/{log/.gitkeep → spec/support/fixtures/uploaded_file.txt} +0 -0
- data/spec/support/helpers/config_helpers.rb +24 -0
- data/spec/support/helpers/notification_helpers.rb +0 -2
- data/spec/support/helpers/transaction_helpers.rb +17 -2
- data/spec/support/project_fixture/config/appsignal.yml +18 -0
- data/spec/support/project_fixture/log/.gitkeep +0 -0
- data/spec/support/rails/my_app.rb +6 -0
- metadata +99 -83
- data/config/appsignal.yml +0 -10
- data/lib/appsignal/listener.rb +0 -21
- data/lib/appsignal/middleware.rb +0 -3
- data/lib/appsignal/middleware/action_view_sanitizer.rb +0 -21
- data/lib/appsignal/middleware/active_record_sanitizer.rb +0 -62
- data/lib/appsignal/middleware/chain.rb +0 -99
- data/lib/appsignal/middleware/delete_blanks.rb +0 -12
- data/lib/appsignal/railtie.rb +0 -37
- data/lib/appsignal/to_appsignal_hash.rb +0 -21
- data/lib/appsignal/transaction/transaction_formatter.rb +0 -67
- data/spec/appsignal/capistrano_spec.rb +0 -81
- data/spec/appsignal/config_spec.rb +0 -177
- data/spec/appsignal/inactive_railtie_spec.rb +0 -32
- data/spec/appsignal/middleware/action_view_sanitizer_spec.rb +0 -27
- data/spec/appsignal/middleware/active_record_sanitizer_spec.rb +0 -212
- data/spec/appsignal/railtie_spec.rb +0 -74
- data/spec/appsignal/to_appsignal_hash_spec.rb +0 -29
- data/spec/appsignal_spec.rb +0 -195
- data/spec/generators/appsignal/appsignal_generator_spec.rb +0 -181
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MmJjZmJmYThiYzQxNmNkYmY3OTljN2M4MzE3ZmI2NTJiNWExM2QyZA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MDdlY2ZlZDlhN2FlN2Q4MDI0Nzg0NDFiODdmMDAxODRlYjI4NjQwMA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NjQxMWVmNmI4NThmYzdmMDQ3ZDM1YzNkODAwYTZjNWY2NTJlNzNlNzQzNDRk
|
10
|
+
NGVkYzQwYWZiOGZmN2ZiN2ExMGJhODRmMmFhNGY3N2M0M2VkNjQxNzRiZmRk
|
11
|
+
MmJlMjFmYmRjMmU4NWI0YWNmZDk3NjY0MThkYzVjMDE3MjRjMmE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZDUwNTQ3ZGQyZmUwMmQ1OWE1YzcxNTQ4NzNkYWJjNDUwZmQ0OGEyMDY2ODgy
|
14
|
+
NDExNWQyMGRlZjc3MTMwMzk1MjFkYTdkMzBkZDNjOTNiNTI2YTEyNzdiMWEz
|
15
|
+
NWMzYzY2MTkyMjg2YzY0NDVmNjBmOTM3ZDkwZjU3ZGNjYmY1MTQ=
|
data/.gitignore
CHANGED
@@ -3,14 +3,15 @@
|
|
3
3
|
.sass-cache
|
4
4
|
capybara-*.html
|
5
5
|
.rspec
|
6
|
-
|
6
|
+
*.log
|
7
7
|
/.bundle
|
8
8
|
/vendor/bundle
|
9
9
|
/tmp/*
|
10
10
|
/db/*.sqlite3
|
11
11
|
/public/system/*
|
12
12
|
/coverage/
|
13
|
-
/spec/tmp
|
13
|
+
/spec/tmp
|
14
|
+
/spec/support/project_fixture/log/*.log
|
14
15
|
**.orig
|
15
16
|
rerun.txt
|
16
17
|
pickle-email-*.html
|
data/.travis.yml
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
language: ruby
|
2
2
|
|
3
3
|
rvm:
|
4
|
-
- 1.
|
5
|
-
-
|
6
|
-
-
|
7
|
-
-
|
4
|
+
- "1.9.3"
|
5
|
+
- "2.0.0"
|
6
|
+
- "jruby-19mode"
|
7
|
+
- "rbx-2.1.1"
|
8
8
|
|
9
9
|
gemfile:
|
10
|
-
- gemfiles/
|
11
|
-
- gemfiles/3.
|
12
|
-
- gemfiles/3.
|
13
|
-
- gemfiles/
|
10
|
+
- "gemfiles/rack.gemfile"
|
11
|
+
- "gemfiles/rails-3.0.gemfile"
|
12
|
+
- "gemfiles/rails-3.1.gemfile"
|
13
|
+
- "gemfiles/rails-3.2.gemfile"
|
14
|
+
- "gemfiles/rails-4.0.gemfile"
|
14
15
|
|
15
16
|
matrix:
|
16
17
|
allow_failures:
|
17
|
-
- rvm:
|
18
|
-
- rvm: jruby-19mode
|
18
|
+
- rvm: "jruby-19mode"
|
19
19
|
|
20
|
-
script: RAILS_ENV=test bundle exec rspec spec
|
20
|
+
script: "RAILS_ENV=test bundle exec rspec spec"
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -52,3 +52,29 @@ class RemoveBoringPayload
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
```
|
55
|
+
|
56
|
+
## Development
|
57
|
+
|
58
|
+
Run rake bundle or, or run bundle install for all Gemfiles:
|
59
|
+
|
60
|
+
```
|
61
|
+
bundle --gemfile gemfiles/no_dependencies.gemfile
|
62
|
+
bundle --gemfile gemfiles/rails-3.0.gemfile
|
63
|
+
bundle --gemfile gemfiles/rails-3.1.gemfile
|
64
|
+
bundle --gemfile gemfiles/rails-3.2.gemfile
|
65
|
+
bundle --gemfile gemfiles/rails-4.0.gemfile
|
66
|
+
bundle --gemfile gemfiles/sinatra.gemfile
|
67
|
+
```
|
68
|
+
|
69
|
+
To run the spec suite with a specific Gemfile:
|
70
|
+
|
71
|
+
```
|
72
|
+
BUNDLE_GEMFILE=gemfiles/no_dependencies.gemfile bundle exec rspec
|
73
|
+
BUNDLE_GEMFILE=gemfiles/rails-3.0.gemfile bundle exec rspec
|
74
|
+
BUNDLE_GEMFILE=gemfiles/rails-3.1.gemfile bundle exec rspec
|
75
|
+
BUNDLE_GEMFILE=gemfiles/rails-3.2.gemfile bundle exec rspec
|
76
|
+
BUNDLE_GEMFILE=gemfiles/rails-4.0.gemfile bundle exec rspec
|
77
|
+
BUNDLE_GEMFILE=gemfiles/sinatra.gemfile bundle exec rspec
|
78
|
+
```
|
79
|
+
|
80
|
+
Or run `rake spec` to run specs for all Gemfiles. Travis will run specs for these Gemfiles as well.
|
data/Rakefile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
require 'appsignal/version'
|
2
|
-
|
3
1
|
task :publish do
|
2
|
+
require 'appsignal/version'
|
3
|
+
|
4
4
|
NAME = 'appsignal'
|
5
5
|
VERSION_FILE = 'lib/appsignal/version.rb'
|
6
6
|
CHANGELOG_FILE = 'CHANGELOG.md'
|
@@ -29,7 +29,7 @@ task :publish do
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def changes
|
32
|
-
git_status_to_array(`git status -s -u
|
32
|
+
git_status_to_array(`git status -s -u`)
|
33
33
|
end
|
34
34
|
|
35
35
|
def gem_version
|
@@ -57,3 +57,32 @@ task :publish do
|
|
57
57
|
raise "Actually change the version in: #{VERSION_FILE}"
|
58
58
|
end
|
59
59
|
end
|
60
|
+
|
61
|
+
task :bundle do
|
62
|
+
puts `bundle --gemfile gemfiles/no_dependencies.gemfile`
|
63
|
+
puts `bundle --gemfile gemfiles/rails-3.0.gemfile`
|
64
|
+
puts `bundle --gemfile gemfiles/rails-3.1.gemfile`
|
65
|
+
puts `bundle --gemfile gemfiles/rails-3.2.gemfile`
|
66
|
+
puts `bundle --gemfile gemfiles/rails-4.0.gemfile`
|
67
|
+
puts `bundle --gemfile gemfiles/sinatra.gemfile`
|
68
|
+
end
|
69
|
+
|
70
|
+
task :spec do
|
71
|
+
puts 'Running no dependencies'
|
72
|
+
puts `env BUNDLE_GEMFILE=gemfiles/no_dependencies.gemfile bundle exec rspec`
|
73
|
+
|
74
|
+
puts 'Running rails-3.0'
|
75
|
+
puts `env BUNDLE_GEMFILE=gemfiles/rails-3.0.gemfile bundle exec rspec`
|
76
|
+
|
77
|
+
puts 'Running rails-3.1'
|
78
|
+
puts `env BUNDLE_GEMFILE=gemfiles/rails-3.1.gemfile bundle exec rspec`
|
79
|
+
|
80
|
+
puts 'Running rails-3.2'
|
81
|
+
puts `env BUNDLE_GEMFILE=gemfiles/rails-3.2.gemfile bundle exec rspec`
|
82
|
+
|
83
|
+
puts 'Running rails-4.0'
|
84
|
+
puts `env BUNDLE_GEMFILE=gemfiles/rails-4.0.gemfile bundle exec rspec`
|
85
|
+
|
86
|
+
puts 'Running sinatra'
|
87
|
+
puts `env BUNDLE_GEMFILE=gemfiles/sinatra.gemfile bundle exec rspec`
|
88
|
+
end
|
data/appsignal.gemspec
CHANGED
@@ -9,26 +9,35 @@ Gem::Specification.new do |gem|
|
|
9
9
|
'Ron Cadier',
|
10
10
|
'Jacob Vosmaer'
|
11
11
|
]
|
12
|
-
gem.email
|
13
|
-
gem.description
|
14
|
-
gem.summary
|
15
|
-
|
16
|
-
gem.homepage
|
17
|
-
gem.license
|
12
|
+
gem.email = ['support@appsignal.com']
|
13
|
+
gem.description = 'The official appsignal.com gem'
|
14
|
+
gem.summary = 'Logs performance and exception data from your app to'\
|
15
|
+
'appsignal.com'
|
16
|
+
gem.homepage = 'https://github.com/appsignal/appsignal'
|
17
|
+
gem.license = 'MIT'
|
18
18
|
|
19
|
-
gem.files
|
20
|
-
gem.executables
|
21
|
-
gem.test_files
|
22
|
-
gem.name
|
23
|
-
gem.require_paths
|
24
|
-
gem.version
|
19
|
+
gem.files = `git ls-files`.split($\)
|
20
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
21
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
22
|
+
gem.name = 'appsignal'
|
23
|
+
gem.require_paths = ['lib']
|
24
|
+
gem.version = Appsignal::VERSION
|
25
|
+
gem.required_ruby_version = '>= 1.9.3'
|
25
26
|
|
26
|
-
gem.add_dependency '
|
27
|
-
gem.add_dependency '
|
28
|
-
gem.add_dependency '
|
27
|
+
gem.add_dependency 'activesupport', '>= 3.0'
|
28
|
+
gem.add_dependency 'rack'
|
29
|
+
gem.add_dependency 'thread_safe'
|
29
30
|
|
31
|
+
gem.add_development_dependency 'rake'
|
30
32
|
gem.add_development_dependency 'rspec'
|
31
33
|
gem.add_development_dependency 'capistrano', '< 3.0'
|
32
|
-
gem.add_development_dependency 'generator_spec'
|
33
34
|
gem.add_development_dependency 'pry'
|
35
|
+
|
36
|
+
if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
|
37
|
+
gem.add_development_dependency 'racc'
|
38
|
+
gem.add_development_dependency 'rubysl-enumerator'
|
39
|
+
gem.add_development_dependency 'rubysl-net-http'
|
40
|
+
gem.add_development_dependency 'rubysl-rexml'
|
41
|
+
gem.add_development_dependency 'rubysl-test-unit'
|
42
|
+
end
|
34
43
|
end
|
data/lib/appsignal.rb
CHANGED
@@ -1,14 +1,27 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
end
|
1
|
+
require 'logger'
|
2
|
+
require 'rack'
|
3
|
+
require 'thread_safe'
|
4
|
+
require 'active_support/json'
|
6
5
|
|
7
6
|
module Appsignal
|
8
7
|
class << self
|
9
|
-
attr_accessor :
|
8
|
+
attr_accessor :config, :logger, :agent
|
10
9
|
attr_reader :in_memory_log
|
11
10
|
|
11
|
+
def start
|
12
|
+
if config
|
13
|
+
if config[:debug]
|
14
|
+
logger.level = Logger::DEBUG
|
15
|
+
else
|
16
|
+
logger.level = Logger::INFO
|
17
|
+
end
|
18
|
+
logger.info("Starting appsignal-#{Appsignal::VERSION}")
|
19
|
+
@agent = Appsignal::Agent.new
|
20
|
+
else
|
21
|
+
logger.error("Can't start, no config loaded")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
12
25
|
# Convenience method for adding a transaction to the queue. This queue is
|
13
26
|
# managed and is periodically pushed to Appsignal.
|
14
27
|
#
|
@@ -51,10 +64,6 @@ module Appsignal
|
|
51
64
|
@transactions ||= {}
|
52
65
|
end
|
53
66
|
|
54
|
-
def agent
|
55
|
-
@agent ||= Appsignal::Agent.new
|
56
|
-
end
|
57
|
-
|
58
67
|
def logger
|
59
68
|
@in_memory_log = StringIO.new unless @in_memory_log
|
60
69
|
@logger ||= Logger.new(@in_memory_log).tap do |l|
|
@@ -71,16 +80,8 @@ module Appsignal
|
|
71
80
|
ActiveSupport::JSON
|
72
81
|
end
|
73
82
|
|
74
|
-
def logger=(l)
|
75
|
-
@logger = l
|
76
|
-
end
|
77
|
-
|
78
|
-
def config
|
79
|
-
@config ||= Appsignal::Config.new(Rails.root, Rails.env).load
|
80
|
-
end
|
81
|
-
|
82
83
|
def post_processing_middleware
|
83
|
-
@post_processing_chain ||= PostProcessor.default_middleware
|
84
|
+
@post_processing_chain ||= Appsignal::Aggregator::PostProcessor.default_middleware
|
84
85
|
yield @post_processing_chain if block_given?
|
85
86
|
@post_processing_chain
|
86
87
|
end
|
@@ -90,21 +91,25 @@ module Appsignal
|
|
90
91
|
end
|
91
92
|
|
92
93
|
def is_ignored_exception?(exception)
|
93
|
-
|
94
|
-
include?(exception.class.name)
|
94
|
+
Appsignal.config[:ignore_exceptions].include?(exception.class.name)
|
95
95
|
end
|
96
96
|
end
|
97
97
|
end
|
98
98
|
|
99
99
|
require 'appsignal/agent'
|
100
100
|
require 'appsignal/aggregator'
|
101
|
+
require 'appsignal/aggregator/post_processor'
|
102
|
+
require 'appsignal/aggregator/middleware'
|
101
103
|
require 'appsignal/auth_check'
|
102
104
|
require 'appsignal/config'
|
103
|
-
require 'appsignal/integrations/passenger'
|
104
|
-
require 'appsignal/listener'
|
105
105
|
require 'appsignal/marker'
|
106
|
-
require 'appsignal/
|
107
|
-
require 'appsignal/
|
106
|
+
require 'appsignal/rack/listener'
|
107
|
+
require 'appsignal/rack/instrumentation'
|
108
108
|
require 'appsignal/transaction'
|
109
|
+
require 'appsignal/transaction/formatter'
|
110
|
+
require 'appsignal/transaction/params_sanitizer'
|
109
111
|
require 'appsignal/transmitter'
|
110
112
|
require 'appsignal/version'
|
113
|
+
|
114
|
+
require 'appsignal/integrations/passenger'
|
115
|
+
require 'appsignal/integrations/rails'
|
data/lib/appsignal/agent.rb
CHANGED
@@ -2,44 +2,64 @@ module Appsignal
|
|
2
2
|
class Agent
|
3
3
|
ACTION = 'log_entries'.freeze
|
4
4
|
|
5
|
-
attr_reader :aggregator, :thread, :active, :sleep_time, :transmitter, :
|
5
|
+
attr_reader :aggregator, :thread, :active, :sleep_time, :transmitter, :subscriber
|
6
6
|
|
7
7
|
def initialize
|
8
8
|
return unless Appsignal.active?
|
9
|
-
|
9
|
+
if Appsignal.config.env == 'development'
|
10
|
+
@sleep_time = 10.0
|
11
|
+
else
|
12
|
+
@sleep_time = 60.0
|
13
|
+
end
|
10
14
|
@aggregator = Aggregator.new
|
11
|
-
@
|
12
|
-
|
15
|
+
@transmitter = Transmitter.new(ACTION)
|
16
|
+
subscribe
|
17
|
+
start_thread
|
18
|
+
# Shutdown at exit. This does not work in passenger, see integrations/passenger
|
19
|
+
#at_exit { Appsignal.agent.shutdown(true) }
|
20
|
+
Appsignal.logger.info('Started Appsignal agent')
|
21
|
+
end
|
22
|
+
|
23
|
+
def start_thread
|
24
|
+
Appsignal.logger.debug('Starting agent thread')
|
13
25
|
@thread = Thread.new do
|
14
|
-
|
15
|
-
while true do
|
26
|
+
loop do
|
16
27
|
send_queue if aggregator.has_transactions?
|
17
28
|
Appsignal.logger.debug("Sleeping #{sleep_time}")
|
18
29
|
sleep(sleep_time)
|
19
30
|
end
|
20
31
|
end
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
32
|
+
end
|
33
|
+
|
34
|
+
def subscribe
|
35
|
+
Appsignal.logger.debug('Subscribing to notifications')
|
36
|
+
# Subscribe to notifications that don't start with a !
|
37
|
+
@subscriber = ActiveSupport::Notifications.subscribe(/^[^!]/) do |*args|
|
38
|
+
if Appsignal::Transaction.current
|
39
|
+
event = ActiveSupport::Notifications::Event.new(*args)
|
40
|
+
if event.name.start_with?('process_action')
|
41
|
+
Appsignal::Transaction.current.set_process_action_event(event)
|
42
|
+
end
|
43
|
+
Appsignal::Transaction.current.add_event(event)
|
44
|
+
end
|
45
|
+
end
|
27
46
|
end
|
28
47
|
|
29
48
|
def enqueue(transaction)
|
30
49
|
Appsignal.logger.debug('Enqueueing transaction')
|
31
|
-
|
32
|
-
aggregator.add(transaction)
|
33
|
-
end
|
50
|
+
aggregator.add(transaction)
|
34
51
|
end
|
35
52
|
|
36
53
|
def send_queue
|
37
54
|
Appsignal.logger.debug('Sending queue')
|
55
|
+
# Replace aggregator while making sure no thread
|
56
|
+
# is adding to it's queue
|
38
57
|
aggregator_to_be_sent = nil
|
39
|
-
|
58
|
+
Thread.exclusive do
|
40
59
|
aggregator_to_be_sent = aggregator
|
41
60
|
@aggregator = Aggregator.new
|
42
61
|
end
|
62
|
+
|
43
63
|
begin
|
44
64
|
handle_result(
|
45
65
|
transmitter.transmit(aggregator_to_be_sent.post_processed_queue!)
|
@@ -62,7 +82,7 @@ module Appsignal
|
|
62
82
|
|
63
83
|
def shutdown(send_current_queue=false)
|
64
84
|
Appsignal.logger.info('Shutting down the agent')
|
65
|
-
ActiveSupport::Notifications.unsubscribe(
|
85
|
+
ActiveSupport::Notifications.unsubscribe(subscriber)
|
66
86
|
Thread.kill(thread) if thread
|
67
87
|
send_queue if send_current_queue && @aggregator.has_transactions?
|
68
88
|
end
|