traceview 3.3.3-java → 3.4.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +18 -18
  3. data/CHANGELOG.md +13 -0
  4. data/README.md +3 -1
  5. data/Rakefile +18 -9
  6. data/gemfiles/delayed_job.gemfile +38 -0
  7. data/gemfiles/frameworks.gemfile +1 -2
  8. data/gemfiles/libraries.gemfile +1 -2
  9. data/gemfiles/rails23.gemfile +1 -2
  10. data/gemfiles/rails30.gemfile +4 -2
  11. data/gemfiles/rails31.gemfile +4 -2
  12. data/gemfiles/rails32.gemfile +4 -2
  13. data/gemfiles/rails40.gemfile +4 -2
  14. data/gemfiles/rails41.gemfile +4 -2
  15. data/gemfiles/rails42.gemfile +4 -2
  16. data/lib/traceview/api/layerinit.rb +3 -5
  17. data/lib/traceview/api/logging.rb +63 -50
  18. data/lib/traceview/api/memcache.rb +10 -9
  19. data/lib/traceview/api/profiling.rb +6 -7
  20. data/lib/traceview/api/util.rb +1 -1
  21. data/lib/traceview/base.rb +21 -7
  22. data/lib/traceview/config.rb +8 -4
  23. data/lib/traceview/frameworks/padrino.rb +2 -2
  24. data/lib/traceview/frameworks/rails/inst/action_controller.rb +3 -3
  25. data/lib/traceview/frameworks/rails/inst/action_view.rb +4 -2
  26. data/lib/traceview/frameworks/rails/inst/action_view_2x.rb +4 -2
  27. data/lib/traceview/frameworks/rails/inst/action_view_30.rb +4 -2
  28. data/lib/traceview/frameworks/rails/inst/connection_adapters/utils.rb +3 -3
  29. data/lib/traceview/frameworks/rails.rb +26 -32
  30. data/lib/traceview/frameworks/sinatra/templates.rb +1 -1
  31. data/lib/traceview/frameworks/sinatra.rb +1 -1
  32. data/lib/traceview/inst/dalli.rb +4 -5
  33. data/lib/traceview/inst/delayed_job.rb +92 -0
  34. data/lib/traceview/inst/em-http-request.rb +3 -0
  35. data/lib/traceview/inst/excon.rb +3 -3
  36. data/lib/traceview/inst/faraday.rb +4 -1
  37. data/lib/traceview/inst/mongo.rb +10 -5
  38. data/lib/traceview/inst/moped.rb +4 -4
  39. data/lib/traceview/inst/redis.rb +5 -7
  40. data/lib/traceview/inst/resque.rb +3 -3
  41. data/lib/traceview/inst/rest-client.rb +2 -2
  42. data/lib/traceview/inst/sidekiq-client.rb +3 -0
  43. data/lib/traceview/inst/sidekiq-worker.rb +3 -0
  44. data/lib/traceview/inst/twitter-cassandra.rb +8 -4
  45. data/lib/traceview/test.rb +30 -1
  46. data/lib/traceview/util.rb +7 -0
  47. data/lib/traceview/version.rb +2 -2
  48. data/test/frameworks/rails3x_test.rb +12 -2
  49. data/test/frameworks/rails4x_test.rb +12 -2
  50. data/test/instrumentation/curb_test.rb +2 -2
  51. data/test/instrumentation/dalli_test.rb +121 -118
  52. data/test/instrumentation/httpclient_test.rb +0 -1
  53. data/test/jobs/delayed_job/db_worker_job.rb +29 -0
  54. data/test/jobs/delayed_job/error_worker_job.rb +10 -0
  55. data/test/jobs/delayed_job/remote_call_worker_job.rb +20 -0
  56. data/test/minitest_helper.rb +8 -3
  57. data/test/models/widget.rb +19 -0
  58. data/test/queues/delayed_job-client_test.rb +95 -0
  59. data/test/queues/delayed_job-worker_test.rb +91 -0
  60. data/test/servers/delayed_job.rb +102 -0
  61. data/test/servers/rails3x_8140.rb +17 -1
  62. data/test/servers/rails4x_8140.rb +18 -1
  63. data/test/support/auto_tracing.rb +40 -0
  64. data/test/support/config_test.rb +5 -1
  65. data/traceview.gemspec +1 -0
  66. metadata +34 -6
  67. data/test/instrumentation/delayed_job-client_test.rb +0 -128
  68. data/test/instrumentation/delayed_job-worker_test.rb +0 -177
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ba9ede32f6b82764e4c1f79575f13195e60365cc
4
- data.tar.gz: 7c4fd3b02180e75ff31c4e0ffb0244377bf680a4
3
+ metadata.gz: 79f990d586021911ee937f498d590b569da91445
4
+ data.tar.gz: 803519418a7cb2bb09cdcd915d436afaaa434222
5
5
  SHA512:
6
- metadata.gz: af167e8b74c3d2ca7186d6c6112ec965f6aab6cff43ee9f2bbc42a0fc94081904909047babac08f7149cdc89958f1d3ed4f59822d36b09fea62ce14f42600a7e
7
- data.tar.gz: 4374aa1626b0d93804e27b3f6d92b1eee7491fa4c7455ad5cedd19aefd668ee5c94b404ffec22a7f8d4f1b47764c635ba9ab7842e976f1a3adc5e0be28f650e8
6
+ metadata.gz: 2f3ad43392f02407f593ed2170fb053a16e7a77c30e30b1ffc1aa62972877373d395f10cf104901a64e6a314df4299405e33714edf5cce111a30acabba16ee5f
7
+ data.tar.gz: 87606a310e7cd5964ab73d6d57cbd9379e00f49ebcf75c80510c790ebea18132618950352eb933c8f4fc89b6990cb293953db786607c9df4c084c824fa9f6b43
data/.travis.yml CHANGED
@@ -6,42 +6,42 @@ cache:
6
6
  - vendor/bundle
7
7
 
8
8
  rvm:
9
- - 2.2.3
9
+ - 2.2.4
10
10
  - 1.9.3
11
11
  - 1.8.7
12
- - jruby-9.0.0.0
12
+ - jruby-9.0.4.0
13
13
 
14
14
  gemfile:
15
15
  - gemfiles/libraries.gemfile
16
16
  - gemfiles/frameworks.gemfile
17
- - gemfiles/rails30.gemfile
18
- - gemfiles/rails31.gemfile
19
17
  - gemfiles/rails32.gemfile
20
- - gemfiles/rails40.gemfile
21
- - gemfiles/rails41.gemfile
22
18
  - gemfiles/rails42.gemfile
19
+ - gemfiles/delayed_job.gemfile
23
20
 
24
21
  matrix:
25
22
  exclude:
26
23
  # Rails 4.0+ requires Ruby 1.9.3 or higher
27
24
  - rvm: 1.8.7
28
- gemfile: gemfiles/rails40.gemfile
29
- - rvm: 1.8.7
30
- gemfile: gemfiles/rails41.gemfile
31
- - rvm: 1.8.7
32
- gemfile: gemfiles/rails42.gemfile
33
- - rvm: ree
34
- gemfile: gemfiles/rails40.gemfile
35
- - rvm: ree
36
- gemfile: gemfiles/rails41.gemfile
37
- - rvm: ree
38
25
  gemfile: gemfiles/rails42.gemfile
39
26
 
27
+ # Don't test DelayedJob under MRI 1.8 and JRuby
28
+ - rvm: 1.8.7
29
+ gemfile: gemfiles/delayed_job.gemfile
30
+
31
+ - rvm: jruby-9.0.4.0
32
+ gemfile: gemfiles/delayed_job.gemfile
33
+
40
34
  # Other frameworks tested on Ruby 1.9.3 or higher
41
35
  - rvm: 1.8.7
42
36
  gemfile: gemfiles/frameworks.gemfile
43
- - rvm: ree
44
- gemfile: gemfiles/frameworks.gemfile
37
+
38
+ allow_failures:
39
+ - rvm: jruby-9.0.4.0
40
+ gemfile: gemfiles/rails32.gemfile
41
+
42
+ - rvm: jruby-9.0.4.0
43
+ gemfile: gemfiles/rails42.gemfile
44
+
45
45
 
46
46
  # Attempt Travis/Cassandra fix re: https://github.com/travis-ci/travis-ci/issues/1484
47
47
  # Updated Cassandra: https://github.com/travis-ci/travis-ci/issues/1650
data/CHANGELOG.md CHANGED
@@ -4,6 +4,19 @@ https://github.com/appneta/oboe-ruby/releases
4
4
 
5
5
  Dates in this file are in the format MM/DD/YYYY.
6
6
 
7
+ # traceview 3.4.0
8
+
9
+ This minor release includes the following features & fixes:
10
+
11
+ * New [DelayedJob](https://github.com/collectiveidea/delayed_job/) instrumentation: #151
12
+ * Limit BSON gem dependency to < 4.0: #152
13
+ * Code refactoring & improvements: #148
14
+
15
+ Pushed to Rubygems:
16
+
17
+ https://rubygems.org/gems/traceview/versions/3.4.0
18
+ https://rubygems.org/gems/traceview/versions/3.4.0-java
19
+
7
20
  # traceview 3.3.3
8
21
 
9
22
  This patch release includes the following fixes:
data/README.md CHANGED
@@ -16,6 +16,8 @@ _Note: The repository name has been changed to ruby-traceview. Please update yo
16
16
 
17
17
  # Installation
18
18
 
19
+ _Before installing the gem below, make sure that you have the [base packages](http://docs.appneta.com/installation-overview#1-install-base-packages) installed on your host first._
20
+
19
21
  The traceview gem is [available on Rubygems](https://rubygems.org/gems/traceview) and can be installed with:
20
22
 
21
23
  ```bash
@@ -199,7 +201,7 @@ class Engine
199
201
  end
200
202
  ```
201
203
 
202
- This example demonstrates method profiling of instance methods. Class methods are profiled slightly differently. See the TraceView [documentation portal](https://docs.appneta.com/custom-ruby-instrumentation) for full details.
204
+ This example demonstrates method profiling of instance methods. Class methods are profiled slightly differently. See the TraceView [documentation portal](https://docs.appneta.com/ruby#customizing-ruby-instrumentation) for full details.
203
205
 
204
206
  # Support
205
207
 
data/Rakefile CHANGED
@@ -3,6 +3,7 @@
3
3
  require 'rubygems'
4
4
  require 'bundler/setup'
5
5
  require 'rake/testtask'
6
+ require 'traceview/test'
6
7
 
7
8
  Rake::TestTask.new do |t|
8
9
  t.verbose = true
@@ -16,7 +17,10 @@ Rake::TestTask.new do |t|
16
17
  # Here we detect the Gemfile the tests are being run against
17
18
  # and load the appropriate tests.
18
19
  #
19
- case File.basename(ENV['BUNDLE_GEMFILE'])
20
+ case TraceView::Test.gemfile
21
+ when /delayed_job/
22
+ require 'delayed/tasks'
23
+ t.test_files = FileList["test/queues/delayed_job*_test.rb"]
20
24
  when /rails/
21
25
  # Pre-load rails to get the major version number
22
26
  require 'rails'
@@ -114,22 +118,27 @@ end
114
118
  desc "Rebuild the gem's c extension"
115
119
  task :recompile => [ :distclean, :compile ]
116
120
 
117
- task :console do
118
- require 'traceview/test'
121
+ task :environment do
119
122
  ENV['TRACEVIEW_GEM_VERBOSE'] = 'true'
123
+
120
124
  Bundler.require(:default, :development)
121
125
  TraceView::Config[:tracing_mode] = :always
122
126
  TV::Test.load_extras
127
+
128
+ if TV::Test.gemfile?(:delayed_job)
129
+ require 'delayed/tasks'
130
+ end
131
+ end
132
+
133
+ task :console => :environment do
123
134
  ARGV.clear
135
+ if TV::Test.gemfile?(:delayed_job)
136
+ require './test/servers/delayed_job'
137
+ end
124
138
  Pry.start
125
139
  end
126
140
 
127
141
  # Used when testing Resque locally
128
- task "resque:setup" do
142
+ task "resque:setup" => :environment do
129
143
  require 'resque/tasks'
130
- require 'traceview/test'
131
- ENV['TRACEVIEW_GEM_VERBOSE'] = 'true'
132
- Bundler.require(:default, :development)
133
- TraceView::Config[:tracing_mode] = :always
134
- TV::Test.load_extras
135
144
  end
@@ -0,0 +1,38 @@
1
+ source "https://rubygems.org"
2
+
3
+ group :development, :test do
4
+ gem 'rake'
5
+ gem 'minitest'
6
+ gem 'minitest-reporters', '< 1.0.18'
7
+ gem 'minitest-debugger', :require => false
8
+ gem 'rack-test'
9
+ gem 'puma'
10
+ gem 'bson'
11
+ end
12
+
13
+ group :development do
14
+ gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
15
+ gem 'debugger', :platform => :mri_19
16
+ gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
17
+ if RUBY_VERSION > '1.8.7'
18
+ gem 'pry'
19
+ gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
20
+ else
21
+ gem 'pry', '0.9.12.4'
22
+ end
23
+ end
24
+
25
+ if defined?(JRUBY_VERSION)
26
+ gem 'sinatra', :require => false
27
+ gem 'activerecord-jdbc-adapter'
28
+ gem 'jdbc-postgresql'
29
+ else
30
+ gem 'sinatra'
31
+ gem 'pg'
32
+ gem "delayed_job_active_record"
33
+ end
34
+
35
+ gem "rails", "~> 4.2.5"
36
+
37
+ gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
38
+ # vim:syntax=ruby
@@ -18,7 +18,6 @@ group :development do
18
18
  gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
19
19
  gem 'debugger', :platform => :mri_19
20
20
  gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
21
- # gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
22
21
  if RUBY_VERSION > '1.8.7'
23
22
  gem 'pry'
24
23
  gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
@@ -33,7 +32,7 @@ else
33
32
  gem 'sinatra'
34
33
  end
35
34
 
36
- gem "grape"
35
+ gem "grape", "< 0.14"
37
36
  gem "padrino", '< 0.13'
38
37
 
39
38
  gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
@@ -28,7 +28,6 @@ group :development do
28
28
  gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
29
29
  gem 'debugger', :platform => :mri_19
30
30
  gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
31
- # gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
32
31
  if RUBY_VERSION > '1.8.7'
33
32
  gem 'pry'
34
33
  gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
@@ -45,7 +44,7 @@ end
45
44
 
46
45
  gem 'cassandra'
47
46
  gem 'curb' unless defined?(JRUBY_VERSION)
48
- gem 'dalli'
47
+ gem 'dalli' if RUBY_VERSION > '1.8.7'
49
48
  gem 'excon'
50
49
  gem 'faraday'
51
50
  gem 'httpclient'
@@ -31,7 +31,6 @@ group :development do
31
31
  gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
32
32
  gem 'debugger', :platform => :mri_19
33
33
  gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
34
- # gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
35
34
  if RUBY_VERSION > '1.8.7'
36
35
  gem 'pry'
37
36
  gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
@@ -46,7 +45,7 @@ else
46
45
  gem 'sinatra'
47
46
  end
48
47
 
49
- gem "rails", "~>2.3"
48
+ gem "rails", "~> 2.3.18"
50
49
 
51
50
  gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
52
51
  # vim:syntax=ruby
@@ -31,7 +31,6 @@ group :development do
31
31
  gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
32
32
  gem 'debugger', :platform => :mri_19
33
33
  gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
34
- # gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
35
34
  if RUBY_VERSION > '1.8.7'
36
35
  gem 'pry'
37
36
  gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
@@ -42,11 +41,14 @@ end
42
41
 
43
42
  if defined?(JRUBY_VERSION)
44
43
  gem 'sinatra', :require => false
44
+ gem 'activerecord-jdbc-adapter'
45
+ gem 'jdbc-postgresql'
45
46
  else
46
47
  gem 'sinatra'
48
+ gem 'pg', '< 0.17'
47
49
  end
48
50
 
49
- gem "rails", "~>3.0"
51
+ gem "rails", "~> 3.0.20"
50
52
 
51
53
  gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
52
54
  # vim:syntax=ruby
@@ -31,7 +31,6 @@ group :development do
31
31
  gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
32
32
  gem 'debugger', :platform => :mri_19
33
33
  gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
34
- # gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
35
34
  if RUBY_VERSION > '1.8.7'
36
35
  gem 'pry'
37
36
  gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
@@ -42,11 +41,14 @@ end
42
41
 
43
42
  if defined?(JRUBY_VERSION)
44
43
  gem 'sinatra', :require => false
44
+ gem 'activerecord-jdbc-adapter'
45
+ gem 'jdbc-postgresql'
45
46
  else
46
47
  gem 'sinatra'
48
+ gem 'pg', '< 0.17'
47
49
  end
48
50
 
49
- gem "rails", "~>3.1"
51
+ gem "rails", "~> 3.1.12"
50
52
 
51
53
  gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
52
54
  # vim:syntax=ruby
@@ -31,7 +31,6 @@ group :development do
31
31
  gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
32
32
  gem 'debugger', :platform => :mri_19
33
33
  gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
34
- # gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
35
34
  if RUBY_VERSION > '1.8.7'
36
35
  gem 'pry'
37
36
  gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
@@ -42,11 +41,14 @@ end
42
41
 
43
42
  if defined?(JRUBY_VERSION)
44
43
  gem 'sinatra', :require => false
44
+ gem 'activerecord-jdbc-adapter'
45
+ gem 'jdbc-postgresql'
45
46
  else
46
47
  gem 'sinatra'
48
+ gem 'pg', '< 0.17'
47
49
  end
48
50
 
49
- gem "rails", "~>3.2"
51
+ gem "rails", "~> 3.2.22"
50
52
 
51
53
  gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
52
54
  # vim:syntax=ruby
@@ -14,7 +14,6 @@ group :development do
14
14
  gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
15
15
  gem 'debugger', :platform => :mri_19
16
16
  gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
17
- # gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
18
17
  if RUBY_VERSION > '1.8.7'
19
18
  gem 'pry'
20
19
  gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
@@ -25,11 +24,14 @@ end
25
24
 
26
25
  if defined?(JRUBY_VERSION)
27
26
  gem 'sinatra', :require => false
27
+ gem 'activerecord-jdbc-adapter'
28
+ gem 'jdbc-postgresql'
28
29
  else
29
30
  gem 'sinatra'
31
+ gem 'pg', '< 0.17'
30
32
  end
31
33
 
32
- gem "rails", "~>4.0"
34
+ gem "rails", "~> 4.0.13"
33
35
 
34
36
  gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
35
37
  # vim:syntax=ruby
@@ -14,7 +14,6 @@ group :development do
14
14
  gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
15
15
  gem 'debugger', :platform => :mri_19
16
16
  gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
17
- # gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
18
17
  if RUBY_VERSION > '1.8.7'
19
18
  gem 'pry'
20
19
  gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
@@ -25,11 +24,14 @@ end
25
24
 
26
25
  if defined?(JRUBY_VERSION)
27
26
  gem 'sinatra', :require => false
27
+ gem 'activerecord-jdbc-adapter'
28
+ gem 'jdbc-postgresql'
28
29
  else
29
30
  gem 'sinatra'
31
+ gem 'pg', '< 0.17'
30
32
  end
31
33
 
32
- gem "rails", "~>4.1"
34
+ gem "rails", "~> 4.1.14"
33
35
 
34
36
  gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
35
37
  # vim:syntax=ruby
@@ -14,7 +14,6 @@ group :development do
14
14
  gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
15
15
  gem 'debugger', :platform => :mri_19
16
16
  gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
17
- # gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
18
17
  if RUBY_VERSION > '1.8.7'
19
18
  gem 'pry'
20
19
  gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
@@ -25,11 +24,14 @@ end
25
24
 
26
25
  if defined?(JRUBY_VERSION)
27
26
  gem 'sinatra', :require => false
27
+ gem 'activerecord-jdbc-adapter'
28
+ gem 'jdbc-postgresql'
28
29
  else
29
30
  gem 'sinatra'
31
+ gem 'pg'
30
32
  end
31
33
 
32
- gem "rails", "~>4.2"
34
+ gem "rails", "~> 4.2.5"
33
35
 
34
36
  gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
35
37
  # vim:syntax=ruby
@@ -13,11 +13,9 @@ module TraceView
13
13
  def report_init(layer = 'rack')
14
14
  # Don't send __Init in development, test or if the gem
15
15
  # isn't fully loaded (e.g. missing c-extension)
16
- if %w(development test).include? ENV['RACK_ENV'] ||
17
- ENV.key?('TRACEVIEW_GEM_TEST') ||
18
- !TraceView.loaded
19
- return
20
- end
16
+ return if %w(development test).include?(ENV['RACK_ENV']) ||
17
+ ENV.key?('TRACEVIEW_GEM_TEST') ||
18
+ !TraceView.loaded
21
19
 
22
20
  platform_info = TraceView::Util.build_init_report
23
21
 
@@ -31,9 +31,9 @@ module TraceView
31
31
  #
32
32
  # Returns nothing.
33
33
  def log(layer, label, opts = {})
34
- if TraceView.loaded
35
- log_event(layer, label, TraceView::Context.createEvent, opts)
36
- end
34
+ return unless TraceView.loaded
35
+
36
+ log_event(layer, label, TraceView::Context.createEvent, opts)
37
37
  end
38
38
 
39
39
  ##
@@ -58,6 +58,11 @@ module TraceView
58
58
  def log_exception(layer, exn, kvs = {})
59
59
  return if !TraceView.loaded || exn.instance_variable_get(:@oboe_logged)
60
60
 
61
+ unless exn
62
+ TV.logger.debug '[traceview/debug] log_exception called with nil exception'
63
+ return
64
+ end
65
+
61
66
  kvs.merge!(:ErrorClass => exn.class.name,
62
67
  :ErrorMsg => exn.message,
63
68
  :Backtrace => exn.backtrace.join("\r\n"))
@@ -84,6 +89,14 @@ module TraceView
84
89
  return if !TraceView.loaded || TraceView.never? ||
85
90
  (opts.key?(:URL) && ::TraceView::Util.static_asset?(opts[:URL]))
86
91
 
92
+ # For entry only layers (DelayedJob workers, Sidekiq workers), auto-set the tracing mode
93
+ # Don't do this if tracing mode is already :always or :never
94
+ if TraceView.through? && TraceView.entry_layer?(layer)
95
+ TraceView.logger.debug "[traceview/debug] Detected #{layer}: auto-configuring tracing mode"
96
+ TraceView::Config[:tracing_mode] = :always
97
+ end
98
+
99
+ # Used by JRuby/Java webservers such as Tomcat
87
100
  TraceView::Context.fromString(xtrace) if TraceView.pickup_context?(xtrace)
88
101
 
89
102
  if TraceView.tracing?
@@ -132,12 +145,12 @@ module TraceView
132
145
  #
133
146
  # Returns an xtrace metadata string
134
147
  def log_end(layer, opts = {})
135
- if TraceView.loaded
136
- log_event(layer, 'exit', TraceView::Context.createEvent, opts)
137
- xtrace = TraceView::Context.toString
138
- TraceView::Context.clear unless TraceView.has_incoming_context?
139
- xtrace
140
- end
148
+ return unless TraceView.loaded
149
+
150
+ log_event(layer, 'exit', TraceView::Context.createEvent, opts)
151
+ xtrace = TraceView::Context.toString
152
+ TraceView::Context.clear unless TraceView.has_incoming_context?
153
+ xtrace
141
154
  end
142
155
 
143
156
  ##
@@ -157,10 +170,10 @@ module TraceView
157
170
  #
158
171
  # Returns an xtrace metadata string
159
172
  def log_entry(layer, kvs = {}, op = nil)
160
- if TraceView.loaded
161
- TraceView.layer_op = op if op
162
- log_event(layer, 'entry', TraceView::Context.createEvent, kvs)
163
- end
173
+ return unless TraceView.loaded
174
+
175
+ TraceView.layer_op = op if op
176
+ log_event(layer, 'entry', TraceView::Context.createEvent, kvs)
164
177
  end
165
178
 
166
179
  ##
@@ -179,9 +192,9 @@ module TraceView
179
192
  #
180
193
  # Returns an xtrace metadata string
181
194
  def log_info(layer, kvs = {})
182
- if TraceView.loaded
183
- log_event(layer, 'info', TraceView::Context.createEvent, kvs)
184
- end
195
+ return unless TraceView.loaded
196
+
197
+ log_event(layer, 'info', TraceView::Context.createEvent, kvs)
185
198
  end
186
199
 
187
200
  ##
@@ -201,10 +214,10 @@ module TraceView
201
214
  #
202
215
  # Returns an xtrace metadata string
203
216
  def log_exit(layer, kvs = {}, op = nil)
204
- if TraceView.loaded
205
- TraceView.layer_op = nil if op
206
- log_event(layer, 'exit', TraceView::Context.createEvent, kvs)
207
- end
217
+ return unless TraceView.loaded
218
+
219
+ TraceView.layer_op = nil if op
220
+ log_event(layer, 'exit', TraceView::Context.createEvent, kvs)
208
221
  end
209
222
 
210
223
  ##
@@ -227,36 +240,36 @@ module TraceView
227
240
  # TraceView::API.log_event(:layer_name, 'exit', exit_event, { :id => @user.id })
228
241
  #
229
242
  def log_event(layer, label, event, opts = {})
230
- if TraceView.loaded
231
- event.addInfo('Layer', layer.to_s) if layer
232
- event.addInfo('Label', label.to_s)
233
-
234
- TraceView.layer = layer if label == 'entry'
235
- TraceView.layer = nil if label == 'exit'
236
-
237
- opts.each do |k, v|
238
- value = nil
239
-
240
- if valid_key? k
241
- if [Integer, Float, Fixnum, NilClass, String].include?(v.class)
242
- value = v
243
- elsif v.class == Set
244
- value = v.to_a.to_s
245
- else
246
- value = v.to_s if v.respond_to?(:to_s)
247
- end
248
-
249
- begin
250
- event.addInfo(k.to_s, value)
251
- rescue ArgumentError => e
252
- TraceView.logger.debug "[TraceView/debug] Couldn't add event KV: #{k.to_s} => #{v.class}"
253
- TraceView.logger.debug "[TraceView/debug] #{e.message}"
254
- end
255
- end
256
- end if !opts.nil? && opts.any?
257
-
258
- TraceView::Reporter.sendReport(event)
259
- end
243
+ return unless TraceView.loaded
244
+
245
+ event.addInfo('Layer', layer.to_s) if layer
246
+ event.addInfo('Label', label.to_s)
247
+
248
+ TraceView.layer = layer if label == 'entry'
249
+ TraceView.layer = nil if label == 'exit'
250
+
251
+ opts.each do |k, v|
252
+ value = nil
253
+
254
+ next unless valid_key? k
255
+
256
+ if [Integer, Float, Fixnum, NilClass, String].include?(v.class)
257
+ value = v
258
+ elsif v.class == Set
259
+ value = v.to_a.to_s
260
+ else
261
+ value = v.to_s if v.respond_to?(:to_s)
262
+ end
263
+
264
+ begin
265
+ event.addInfo(k.to_s, value)
266
+ rescue ArgumentError => e
267
+ TraceView.logger.debug "[TraceView/debug] Couldn't add event KV: #{k} => #{v.class}"
268
+ TraceView.logger.debug "[TraceView/debug] #{e.message}"
269
+ end
270
+ end if !opts.nil? && opts.any?
271
+
272
+ TraceView::Reporter.sendReport(event)
260
273
  end
261
274
  end
262
275
  end
@@ -13,17 +13,18 @@ module TraceView
13
13
  end
14
14
 
15
15
  def remote_host(key)
16
- return unless defined?(Lib.memcached_server_by_key) \
17
- && defined?(@struct) && defined?(is_unix_socket?)
16
+ return unless defined?(Lib.memcached_server_by_key) &&
17
+ defined?(@struct) && defined?(is_unix_socket?)
18
18
 
19
19
  server_as_array = Lib.memcached_server_by_key(@struct, key.to_s)
20
- if server_as_array.is_a?(Array)
21
- server = server_as_array.first
22
- if is_unix_socket?(server)
23
- return 'localhost'
24
- elsif defined?(server.hostname)
25
- return server.hostname
26
- end
20
+
21
+ return unless server_as_array.is_a?(Array)
22
+
23
+ server = server_as_array.first
24
+ if is_unix_socket?(server)
25
+ 'localhost'
26
+ elsif defined?(server.hostname)
27
+ server.hostname
27
28
  end
28
29
  end
29
30
  end
@@ -69,13 +69,12 @@ module TraceView
69
69
  # TraceView::API.profile_method(Array, :sort, opts)
70
70
  #
71
71
  def profile_method(klass, method, opts = {}, extra_kvs = {})
72
-
73
72
  # If we're on an unsupported platform (ahem Mac), just act
74
73
  # like we did something to nicely play the no-op part.
75
74
  return true unless TraceView.loaded
76
75
 
77
76
  if RUBY_VERSION < '1.9.3'
78
- TraceView.logger.warn "[traceview/error] profile_method: Use the legacy method profiling for Ruby versions before 1.9.3"
77
+ TraceView.logger.warn '[traceview/error] profile_method: Use the legacy method profiling for Ruby versions before 1.9.3'
79
78
  return false
80
79
 
81
80
  elsif !klass.is_a?(Module)
@@ -110,7 +109,7 @@ module TraceView
110
109
 
111
110
  # Check if already profiled
112
111
  if klass.instance_methods.include?(with_traceview.to_sym) ||
113
- klass.singleton_methods.include?(with_traceview.to_sym)
112
+ klass.singleton_methods.include?(with_traceview.to_sym)
114
113
  TraceView.logger.warn "[traceview/error] profile_method: #{klass}::#{method} already profiled."
115
114
  TraceView.logger.warn "[traceview/error] profile_method: #{__FILE__}:#{__LINE__}"
116
115
  return false
@@ -130,17 +129,17 @@ module TraceView
130
129
 
131
130
  if instance_method
132
131
  klass.class_eval do
133
- define_method(with_traceview) { | *args, &block |
132
+ define_method(with_traceview) do |*args, &block|
134
133
  profile_wrapper(without_traceview, report_kvs, opts, *args, &block)
135
- }
134
+ end
136
135
 
137
136
  alias_method without_traceview, "#{method}"
138
137
  alias_method "#{method}", with_traceview
139
138
  end
140
139
  elsif class_method
141
- klass.define_singleton_method(with_traceview) { | *args, &block |
140
+ klass.define_singleton_method(with_traceview) do |*args, &block|
142
141
  profile_wrapper(without_traceview, report_kvs, opts, *args, &block)
143
- }
142
+ end
144
143
 
145
144
  klass.singleton_class.class_eval do
146
145
  alias_method without_traceview, "#{method}"