traceview 3.3.3-java → 3.4.0-java
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/.travis.yml +18 -18
 - data/CHANGELOG.md +13 -0
 - data/README.md +3 -1
 - data/Rakefile +18 -9
 - data/gemfiles/delayed_job.gemfile +38 -0
 - data/gemfiles/frameworks.gemfile +1 -2
 - data/gemfiles/libraries.gemfile +1 -2
 - data/gemfiles/rails23.gemfile +1 -2
 - data/gemfiles/rails30.gemfile +4 -2
 - data/gemfiles/rails31.gemfile +4 -2
 - data/gemfiles/rails32.gemfile +4 -2
 - data/gemfiles/rails40.gemfile +4 -2
 - data/gemfiles/rails41.gemfile +4 -2
 - data/gemfiles/rails42.gemfile +4 -2
 - data/lib/traceview/api/layerinit.rb +3 -5
 - data/lib/traceview/api/logging.rb +63 -50
 - data/lib/traceview/api/memcache.rb +10 -9
 - data/lib/traceview/api/profiling.rb +6 -7
 - data/lib/traceview/api/util.rb +1 -1
 - data/lib/traceview/base.rb +21 -7
 - data/lib/traceview/config.rb +8 -4
 - data/lib/traceview/frameworks/padrino.rb +2 -2
 - data/lib/traceview/frameworks/rails/inst/action_controller.rb +3 -3
 - data/lib/traceview/frameworks/rails/inst/action_view.rb +4 -2
 - data/lib/traceview/frameworks/rails/inst/action_view_2x.rb +4 -2
 - data/lib/traceview/frameworks/rails/inst/action_view_30.rb +4 -2
 - data/lib/traceview/frameworks/rails/inst/connection_adapters/utils.rb +3 -3
 - data/lib/traceview/frameworks/rails.rb +26 -32
 - data/lib/traceview/frameworks/sinatra/templates.rb +1 -1
 - data/lib/traceview/frameworks/sinatra.rb +1 -1
 - data/lib/traceview/inst/dalli.rb +4 -5
 - data/lib/traceview/inst/delayed_job.rb +92 -0
 - data/lib/traceview/inst/em-http-request.rb +3 -0
 - data/lib/traceview/inst/excon.rb +3 -3
 - data/lib/traceview/inst/faraday.rb +4 -1
 - data/lib/traceview/inst/mongo.rb +10 -5
 - data/lib/traceview/inst/moped.rb +4 -4
 - data/lib/traceview/inst/redis.rb +5 -7
 - data/lib/traceview/inst/resque.rb +3 -3
 - data/lib/traceview/inst/rest-client.rb +2 -2
 - data/lib/traceview/inst/sidekiq-client.rb +3 -0
 - data/lib/traceview/inst/sidekiq-worker.rb +3 -0
 - data/lib/traceview/inst/twitter-cassandra.rb +8 -4
 - data/lib/traceview/test.rb +30 -1
 - data/lib/traceview/util.rb +7 -0
 - data/lib/traceview/version.rb +2 -2
 - data/test/frameworks/rails3x_test.rb +12 -2
 - data/test/frameworks/rails4x_test.rb +12 -2
 - data/test/instrumentation/curb_test.rb +2 -2
 - data/test/instrumentation/dalli_test.rb +121 -118
 - data/test/instrumentation/httpclient_test.rb +0 -1
 - data/test/jobs/delayed_job/db_worker_job.rb +29 -0
 - data/test/jobs/delayed_job/error_worker_job.rb +10 -0
 - data/test/jobs/delayed_job/remote_call_worker_job.rb +20 -0
 - data/test/minitest_helper.rb +8 -3
 - data/test/models/widget.rb +19 -0
 - data/test/queues/delayed_job-client_test.rb +95 -0
 - data/test/queues/delayed_job-worker_test.rb +91 -0
 - data/test/servers/delayed_job.rb +102 -0
 - data/test/servers/rails3x_8140.rb +17 -1
 - data/test/servers/rails4x_8140.rb +18 -1
 - data/test/support/auto_tracing.rb +40 -0
 - data/test/support/config_test.rb +5 -1
 - data/traceview.gemspec +1 -0
 - metadata +34 -6
 - data/test/instrumentation/delayed_job-client_test.rb +0 -128
 - data/test/instrumentation/delayed_job-worker_test.rb +0 -177
 
    
        data/lib/traceview/api/util.rb
    CHANGED
    
    
    
        data/lib/traceview/base.rb
    CHANGED
    
    | 
         @@ -75,7 +75,7 @@ module TraceViewBase 
     | 
|
| 
       75 
75 
     | 
    
         | 
| 
       76 
76 
     | 
    
         
             
                # This gives us pretty accessors with questions marks at the end
         
     | 
| 
       77 
77 
     | 
    
         
             
                # e.g. is_continued_trace --> is_continued_trace?
         
     | 
| 
       78 
     | 
    
         
            -
                TraceView.methods.select{ |m| m =~ /^is_|^has_/ }.each do |c|
         
     | 
| 
      
 78 
     | 
    
         
            +
                TraceView.methods.select { |m| m =~ /^is_|^has_/ }.each do |c|
         
     | 
| 
       79 
79 
     | 
    
         
             
                  unless c =~ /\?$|=$/
         
     | 
| 
       80 
80 
     | 
    
         
             
                    # TraceView.logger.debug "aliasing #{c}? to #{c}"
         
     | 
| 
       81 
81 
     | 
    
         
             
                    alias_method "#{c}?", c
         
     | 
| 
         @@ -111,7 +111,7 @@ module TraceViewBase 
     | 
|
| 
       111 
111 
     | 
    
         
             
              # operation tracing or one instrumented operation calling another.
         
     | 
| 
       112 
112 
     | 
    
         
             
              #
         
     | 
| 
       113 
113 
     | 
    
         
             
              def tracing_layer?(layer)
         
     | 
| 
       114 
     | 
    
         
            -
                 
     | 
| 
      
 114 
     | 
    
         
            +
                TraceView.layer == layer
         
     | 
| 
       115 
115 
     | 
    
         
             
              end
         
     | 
| 
       116 
116 
     | 
    
         | 
| 
       117 
117 
     | 
    
         
             
              ##
         
     | 
| 
         @@ -131,6 +131,20 @@ module TraceViewBase 
     | 
|
| 
       131 
131 
     | 
    
         
             
                end
         
     | 
| 
       132 
132 
     | 
    
         
             
              end
         
     | 
| 
       133 
133 
     | 
    
         | 
| 
      
 134 
     | 
    
         
            +
              ##
         
     | 
| 
      
 135 
     | 
    
         
            +
              # entry_layer?
         
     | 
| 
      
 136 
     | 
    
         
            +
              #
         
     | 
| 
      
 137 
     | 
    
         
            +
              # Determines if the passed layer is an entry only
         
     | 
| 
      
 138 
     | 
    
         
            +
              # layer where we would want to use smart tracing.
         
     | 
| 
      
 139 
     | 
    
         
            +
              #
         
     | 
| 
      
 140 
     | 
    
         
            +
              # Entry only layers are layers that _only_ start traces
         
     | 
| 
      
 141 
     | 
    
         
            +
              # and doesn't directly receive incoming context such as
         
     | 
| 
      
 142 
     | 
    
         
            +
              # DelayedJob or Sidekiq workers.
         
     | 
| 
      
 143 
     | 
    
         
            +
              #
         
     | 
| 
      
 144 
     | 
    
         
            +
              def entry_layer?(layer)
         
     | 
| 
      
 145 
     | 
    
         
            +
                %w(delayed_job-worker).include?(layer.to_s)
         
     | 
| 
      
 146 
     | 
    
         
            +
              end
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
       134 
148 
     | 
    
         
             
              ##
         
     | 
| 
       135 
149 
     | 
    
         
             
              # Returns true if the tracing_mode is set to always.
         
     | 
| 
       136 
150 
     | 
    
         
             
              # False otherwise
         
     | 
| 
         @@ -160,7 +174,7 @@ module TraceViewBase 
     | 
|
| 
       160 
174 
     | 
    
         
             
              # False otherwise
         
     | 
| 
       161 
175 
     | 
    
         
             
              #
         
     | 
| 
       162 
176 
     | 
    
         
             
              def through?
         
     | 
| 
       163 
     | 
    
         
            -
                TraceView::Config[:tracing_mode] == 'through'
         
     | 
| 
      
 177 
     | 
    
         
            +
                TraceView::Config[:tracing_mode].to_s == 'through'
         
     | 
| 
       164 
178 
     | 
    
         
             
              end
         
     | 
| 
       165 
179 
     | 
    
         | 
| 
       166 
180 
     | 
    
         
             
              ##
         
     | 
| 
         @@ -186,7 +200,7 @@ module TraceViewBase 
     | 
|
| 
       186 
200 
     | 
    
         
             
              #
         
     | 
| 
       187 
201 
     | 
    
         
             
              def forking_webserver?
         
     | 
| 
       188 
202 
     | 
    
         
             
                if (defined?(::Unicorn) && ($PROGRAM_NAME =~ /unicorn/i)) ||
         
     | 
| 
       189 
     | 
    
         
            -
                   (defined?(::Puma) 
     | 
| 
      
 203 
     | 
    
         
            +
                   (defined?(::Puma) && ($PROGRAM_NAME =~ /puma/i))
         
     | 
| 
       190 
204 
     | 
    
         
             
                  true
         
     | 
| 
       191 
205 
     | 
    
         
             
                else
         
     | 
| 
       192 
206 
     | 
    
         
             
                  false
         
     | 
| 
         @@ -199,7 +213,7 @@ module TraceViewBase 
     | 
|
| 
       199 
213 
     | 
    
         
             
              def pry!
         
     | 
| 
       200 
214 
     | 
    
         
             
                # Only valid for development or test environments
         
     | 
| 
       201 
215 
     | 
    
         
             
                env = ENV['RACK_ENV'] || ENV['RAILS_ENV']
         
     | 
| 
       202 
     | 
    
         
            -
                return unless  
     | 
| 
      
 216 
     | 
    
         
            +
                return unless %w(development, test).include? env
         
     | 
| 
       203 
217 
     | 
    
         | 
| 
       204 
218 
     | 
    
         
             
                if RUBY_VERSION > '1.8.7'
         
     | 
| 
       205 
219 
     | 
    
         
             
                  require 'pry-byebug'
         
     | 
| 
         @@ -210,7 +224,7 @@ module TraceViewBase 
     | 
|
| 
       210 
224 
     | 
    
         
             
                    Pry.commands.alias_command 'n', 'next'
         
     | 
| 
       211 
225 
     | 
    
         
             
                    Pry.commands.alias_command 'f', 'finish'
         
     | 
| 
       212 
226 
     | 
    
         | 
| 
       213 
     | 
    
         
            -
                    Pry::Commands.command /^$/,  
     | 
| 
      
 227 
     | 
    
         
            +
                    Pry::Commands.command /^$/, 'repeat last command' do
         
     | 
| 
       214 
228 
     | 
    
         
             
                      _pry_.run_command Pry.history.to_a.last
         
     | 
| 
       215 
229 
     | 
    
         
             
                    end
         
     | 
| 
       216 
230 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -226,7 +240,7 @@ module TraceViewBase 
     | 
|
| 
       226 
240 
     | 
    
         
             
              # or not
         
     | 
| 
       227 
241 
     | 
    
         
             
              #
         
     | 
| 
       228 
242 
     | 
    
         
             
              def framework?
         
     | 
| 
       229 
     | 
    
         
            -
                defined?(::Rails)  
     | 
| 
      
 243 
     | 
    
         
            +
                defined?(::Rails) && defined?(::Sinatra) && defined?(::Padrino) && defined?(::Grape)
         
     | 
| 
       230 
244 
     | 
    
         
             
              end
         
     | 
| 
       231 
245 
     | 
    
         | 
| 
       232 
246 
     | 
    
         
             
              ##
         
     | 
    
        data/lib/traceview/config.rb
    CHANGED
    
    | 
         @@ -12,10 +12,12 @@ module TraceView 
     | 
|
| 
       12 
12 
     | 
    
         
             
                @@config = {}
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
                @@instrumentation = [:action_controller, :action_view, :active_record,
         
     | 
| 
       15 
     | 
    
         
            -
                                     :cassandra, :curb, :dalli, : 
     | 
| 
       16 
     | 
    
         
            -
                                     : 
     | 
| 
       17 
     | 
    
         
            -
                                     : 
     | 
| 
       18 
     | 
    
         
            -
                                     : 
     | 
| 
      
 15 
     | 
    
         
            +
                                     :cassandra, :curb, :dalli, :delayed_jobclient,
         
     | 
| 
      
 16 
     | 
    
         
            +
                                     :delayed_jobworker, :em_http_request, :excon,
         
     | 
| 
      
 17 
     | 
    
         
            +
                                     :faraday, :grape, :httpclient, :nethttp, :memcached,
         
     | 
| 
      
 18 
     | 
    
         
            +
                                     :memcache, :mongo, :moped, :rack, :redis, :resqueclient,
         
     | 
| 
      
 19 
     | 
    
         
            +
                                     :resqueworker, :rest_client, :sequel, :sidekiqclient,
         
     | 
| 
      
 20 
     | 
    
         
            +
                                     :sidekiqworker, :typhoeus]
         
     | 
| 
       19 
21 
     | 
    
         | 
| 
       20 
22 
     | 
    
         
             
                # Subgrouping of instrumentation
         
     | 
| 
       21 
23 
     | 
    
         
             
                @@http_clients = [:curb, :excon, :em_http_request, :faraday, :httpclient, :nethttp, :rest_client, :typhoeus]
         
     | 
| 
         @@ -46,6 +48,8 @@ module TraceView 
     | 
|
| 
       46 
48 
     | 
    
         
             
                  TraceView::Config[:cassandra][:collect_backtraces] = true
         
     | 
| 
       47 
49 
     | 
    
         
             
                  TraceView::Config[:curb][:collect_backtraces] = true
         
     | 
| 
       48 
50 
     | 
    
         
             
                  TraceView::Config[:dalli][:collect_backtraces] = false
         
     | 
| 
      
 51 
     | 
    
         
            +
                  TraceView::Config[:delayed_jobclient][:collect_backtraces] = false
         
     | 
| 
      
 52 
     | 
    
         
            +
                  TraceView::Config[:delayed_jobworker][:collect_backtraces] = false
         
     | 
| 
       49 
53 
     | 
    
         
             
                  TraceView::Config[:em_http_request][:collect_backtraces] = false
         
     | 
| 
       50 
54 
     | 
    
         
             
                  TraceView::Config[:excon][:collect_backtraces] = true
         
     | 
| 
       51 
55 
     | 
    
         
             
                  TraceView::Config[:faraday][:collect_backtraces] = false
         
     | 
| 
         @@ -22,7 +22,7 @@ module TraceView 
     | 
|
| 
       22 
22 
     | 
    
         
             
                        r = dispatch_without_traceview
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
                        # Report Controller/Action as best possible
         
     | 
| 
       25 
     | 
    
         
            -
                        if request.controller  
     | 
| 
      
 25 
     | 
    
         
            +
                        if request.controller && !request.controller.empty?
         
     | 
| 
       26 
26 
     | 
    
         
             
                          report_kvs[:Controller] = request.controller
         
     | 
| 
       27 
27 
     | 
    
         
             
                        else
         
     | 
| 
       28 
28 
     | 
    
         
             
                          report_kvs[:Controller] = self.class
         
     | 
| 
         @@ -44,7 +44,7 @@ end 
     | 
|
| 
       44 
44 
     | 
    
         
             
            if defined?(::Padrino)
         
     | 
| 
       45 
45 
     | 
    
         
             
              # This instrumentation is a superset of the Sinatra instrumentation similar
         
     | 
| 
       46 
46 
     | 
    
         
             
              # to how Padrino is a superset of Sinatra itself.
         
     | 
| 
       47 
     | 
    
         
            -
              ::TraceView.logger.info  
     | 
| 
      
 47 
     | 
    
         
            +
              ::TraceView.logger.info '[traceview/loading] Instrumenting Padrino' if TraceView::Config[:verbose]
         
     | 
| 
       48 
48 
     | 
    
         | 
| 
       49 
49 
     | 
    
         
             
              require 'traceview/frameworks/padrino/templates'
         
     | 
| 
       50 
50 
     | 
    
         | 
| 
         @@ -19,12 +19,12 @@ module TraceView 
     | 
|
| 
       19 
19 
     | 
    
         
             
                  def has_handler?(exception)
         
     | 
| 
       20 
20 
     | 
    
         
             
                    # Don't log exceptions if they have a rescue handler set
         
     | 
| 
       21 
21 
     | 
    
         
             
                    has_handler = false
         
     | 
| 
       22 
     | 
    
         
            -
                    rescue_handlers.detect  
     | 
| 
      
 22 
     | 
    
         
            +
                    rescue_handlers.detect do |klass_name, _handler|
         
     | 
| 
       23 
23 
     | 
    
         
             
                      # Rescue handlers can be specified as strings or constant names
         
     | 
| 
       24 
24 
     | 
    
         
             
                      klass = self.class.const_get(klass_name) rescue nil
         
     | 
| 
       25 
25 
     | 
    
         
             
                      klass ||= klass_name.constantize rescue nil
         
     | 
| 
       26 
26 
     | 
    
         
             
                      has_handler = exception.is_a?(klass) if klass
         
     | 
| 
       27 
     | 
    
         
            -
                     
     | 
| 
      
 27 
     | 
    
         
            +
                    end
         
     | 
| 
       28 
28 
     | 
    
         
             
                    has_handler
         
     | 
| 
       29 
29 
     | 
    
         
             
                  rescue => e
         
     | 
| 
       30 
30 
     | 
    
         
             
                    TraceView.logger.debug "[traceview/debug] Error searching Rails handlers: #{e.message}"
         
     | 
| 
         @@ -101,7 +101,7 @@ module TraceView 
     | 
|
| 
       101 
101 
     | 
    
         
             
                  def process_action_with_traceview(*args)
         
     | 
| 
       102 
102 
     | 
    
         
             
                    report_kvs = {
         
     | 
| 
       103 
103 
     | 
    
         
             
                      :Controller   => self.class.name,
         
     | 
| 
       104 
     | 
    
         
            -
                      :Action       =>  
     | 
| 
      
 104 
     | 
    
         
            +
                      :Action       => action_name,
         
     | 
| 
       105 
105 
     | 
    
         
             
                    }
         
     | 
| 
       106 
106 
     | 
    
         
             
                    TraceView::API.log(nil, 'info', report_kvs)
         
     | 
| 
       107 
107 
     | 
    
         | 
| 
         @@ -23,7 +23,8 @@ if defined?(ActionView::Base) && TraceView::Config[:action_view][:enabled] 
     | 
|
| 
       23 
23 
     | 
    
         
             
                      entry_kvs[:Module]       = :ActionView
         
     | 
| 
       24 
24 
     | 
    
         
             
                      entry_kvs[:File]         = __FILE__
         
     | 
| 
       25 
25 
     | 
    
         
             
                      entry_kvs[:LineNumber]   = __LINE__
         
     | 
| 
       26 
     | 
    
         
            -
                    rescue
         
     | 
| 
      
 26 
     | 
    
         
            +
                    rescue => e
         
     | 
| 
      
 27 
     | 
    
         
            +
                      TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
         
     | 
| 
       27 
28 
     | 
    
         
             
                    end
         
     | 
| 
       28 
29 
     | 
    
         | 
| 
       29 
30 
     | 
    
         
             
                    TraceView::API.profile(name, entry_kvs, TraceView::Config[:action_view][:collect_backtraces]) do
         
     | 
| 
         @@ -41,7 +42,8 @@ if defined?(ActionView::Base) && TraceView::Config[:action_view][:enabled] 
     | 
|
| 
       41 
42 
     | 
    
         
             
                      entry_kvs[:Module]       = :ActionView
         
     | 
| 
       42 
43 
     | 
    
         
             
                      entry_kvs[:File]         = __FILE__
         
     | 
| 
       43 
44 
     | 
    
         
             
                      entry_kvs[:LineNumber]   = __LINE__
         
     | 
| 
       44 
     | 
    
         
            -
                    rescue
         
     | 
| 
      
 45 
     | 
    
         
            +
                    rescue => e
         
     | 
| 
      
 46 
     | 
    
         
            +
                      TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
         
     | 
| 
       45 
47 
     | 
    
         
             
                    end
         
     | 
| 
       46 
48 
     | 
    
         | 
| 
       47 
49 
     | 
    
         
             
                    TraceView::API.profile(name, entry_kvs, TraceView::Config[:action_view][:collect_backtraces]) do
         
     | 
| 
         @@ -19,7 +19,8 @@ if defined?(ActionView::Base) && TraceView::Config[:action_view][:enabled] 
     | 
|
| 
       19 
19 
     | 
    
         
             
                        entry_kvs[:Module]       = :ActionView
         
     | 
| 
       20 
20 
     | 
    
         
             
                        entry_kvs[:File]         = __FILE__
         
     | 
| 
       21 
21 
     | 
    
         
             
                        entry_kvs[:LineNumber]   = __LINE__
         
     | 
| 
       22 
     | 
    
         
            -
                      rescue
         
     | 
| 
      
 22 
     | 
    
         
            +
                      rescue => e
         
     | 
| 
      
 23 
     | 
    
         
            +
                        TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
         
     | 
| 
       23 
24 
     | 
    
         
             
                      end
         
     | 
| 
       24 
25 
     | 
    
         | 
| 
       25 
26 
     | 
    
         
             
                      TraceView::API.profile(name, entry_kvs, TraceView::Config[:action_view][:collect_backtraces]) do
         
     | 
| 
         @@ -40,7 +41,8 @@ if defined?(ActionView::Base) && TraceView::Config[:action_view][:enabled] 
     | 
|
| 
       40 
41 
     | 
    
         
             
                      entry_kvs[:Module]       = :ActionView
         
     | 
| 
       41 
42 
     | 
    
         
             
                      entry_kvs[:File]         = __FILE__
         
     | 
| 
       42 
43 
     | 
    
         
             
                      entry_kvs[:LineNumber]   = __LINE__
         
     | 
| 
       43 
     | 
    
         
            -
                    rescue
         
     | 
| 
      
 44 
     | 
    
         
            +
                    rescue => e
         
     | 
| 
      
 45 
     | 
    
         
            +
                      TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
         
     | 
| 
       44 
46 
     | 
    
         
             
                    end
         
     | 
| 
       45 
47 
     | 
    
         | 
| 
       46 
48 
     | 
    
         
             
                    TraceView::API.profile(name, entry_kvs, TraceView::Config[:action_view][:collect_backtraces]) do
         
     | 
| 
         @@ -16,7 +16,8 @@ if defined?(ActionView::Base) && TraceView::Config[:action_view][:enabled] 
     | 
|
| 
       16 
16 
     | 
    
         
             
                      entry_kvs[:Module]       = 'ActionView::Partials'
         
     | 
| 
       17 
17 
     | 
    
         
             
                      entry_kvs[:File]         = __FILE__
         
     | 
| 
       18 
18 
     | 
    
         
             
                      entry_kvs[:LineNumber]   = __LINE__
         
     | 
| 
       19 
     | 
    
         
            -
                    rescue
         
     | 
| 
      
 19 
     | 
    
         
            +
                    rescue => e
         
     | 
| 
      
 20 
     | 
    
         
            +
                      TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
         
     | 
| 
       20 
21 
     | 
    
         
             
                    end
         
     | 
| 
       21 
22 
     | 
    
         | 
| 
       22 
23 
     | 
    
         
             
                    TraceView::API.profile(name, entry_kvs, TraceView::Config[:action_view][:collect_backtraces]) do
         
     | 
| 
         @@ -34,7 +35,8 @@ if defined?(ActionView::Base) && TraceView::Config[:action_view][:enabled] 
     | 
|
| 
       34 
35 
     | 
    
         
             
                      entry_kvs[:Module]       = 'ActionView::Partials'
         
     | 
| 
       35 
36 
     | 
    
         
             
                      entry_kvs[:File]         = __FILE__
         
     | 
| 
       36 
37 
     | 
    
         
             
                      entry_kvs[:LineNumber]   = __LINE__
         
     | 
| 
       37 
     | 
    
         
            -
                    rescue
         
     | 
| 
      
 38 
     | 
    
         
            +
                    rescue => e
         
     | 
| 
      
 39 
     | 
    
         
            +
                      TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
         
     | 
| 
       38 
40 
     | 
    
         
             
                    end
         
     | 
| 
       39 
41 
     | 
    
         | 
| 
       40 
42 
     | 
    
         
             
                    TraceView::API.profile(name, entry_kvs, TraceView::Config[:action_view][:collect_backtraces]) do
         
     | 
| 
         @@ -28,9 +28,9 @@ module TraceView 
     | 
|
| 
       28 
28 
     | 
    
         
             
                          config = ::Rails.application.config.database_configuration[::Rails.env]
         
     | 
| 
       29 
29 
     | 
    
         
             
                        end
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
                        opts[:Database]   = config['database'] if config.key?('database')
         
     | 
| 
       32 
     | 
    
         
            -
                        opts[:RemoteHost] = config['host']     if config.key?('host')
         
     | 
| 
       33 
     | 
    
         
            -
                        opts[:Flavor]     = config['adapter']  if config.key?('adapter')
         
     | 
| 
      
 31 
     | 
    
         
            +
                        opts[:Database]   = config['database'] if config && config.key?('database')
         
     | 
| 
      
 32 
     | 
    
         
            +
                        opts[:RemoteHost] = config['host']     if config && config.key?('host')
         
     | 
| 
      
 33 
     | 
    
         
            +
                        opts[:Flavor]     = config['adapter']  if config && config.key?('adapter')
         
     | 
| 
       34 
34 
     | 
    
         
             
                      rescue StandardError => e
         
     | 
| 
       35 
35 
     | 
    
         
             
                        TraceView.logger.debug "Exception raised capturing ActiveRecord KVs: #{e.inspect}"
         
     | 
| 
       36 
36 
     | 
    
         
             
                        TraceView.logger.debug e.backtrace.join('\n')
         
     | 
| 
         @@ -11,34 +11,30 @@ module TraceView 
     | 
|
| 
       11 
11 
     | 
    
         
             
                  @@rum_ftr_tmpl = File.read(File.dirname(__FILE__) + '/rails/helpers/rum/rum_footer.js.erb')
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
                  def traceview_rum_header
         
     | 
| 
       14 
     | 
    
         
            -
                     
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                      if  
     | 
| 
       17 
     | 
    
         
            -
                         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                         
     | 
| 
       20 
     | 
    
         
            -
                          return raw(ERB.new(@@rum_hdr_tmpl).result)
         
     | 
| 
       21 
     | 
    
         
            -
                        end
         
     | 
| 
      
 14 
     | 
    
         
            +
                    return unless TraceView::Config.rum_id
         
     | 
| 
      
 15 
     | 
    
         
            +
                    if TraceView.tracing?
         
     | 
| 
      
 16 
     | 
    
         
            +
                      if request.xhr?
         
     | 
| 
      
 17 
     | 
    
         
            +
                        return raw(ERB.new(@@rum_xhr_tmpl).result)
         
     | 
| 
      
 18 
     | 
    
         
            +
                      else
         
     | 
| 
      
 19 
     | 
    
         
            +
                        return raw(ERB.new(@@rum_hdr_tmpl).result)
         
     | 
| 
       22 
20 
     | 
    
         
             
                      end
         
     | 
| 
       23 
     | 
    
         
            -
                    rescue StandardError => e
         
     | 
| 
       24 
     | 
    
         
            -
                      TraceView.logger.warn "traceview_rum_header: #{e.message}."
         
     | 
| 
       25 
     | 
    
         
            -
                      return ""
         
     | 
| 
       26 
21 
     | 
    
         
             
                    end
         
     | 
| 
      
 22 
     | 
    
         
            +
                  rescue StandardError => e
         
     | 
| 
      
 23 
     | 
    
         
            +
                    TraceView.logger.warn "traceview_rum_header: #{e.message}."
         
     | 
| 
      
 24 
     | 
    
         
            +
                    return ''
         
     | 
| 
       27 
25 
     | 
    
         
             
                  end
         
     | 
| 
       28 
26 
     | 
    
         
             
                  alias_method :oboe_rum_header, :traceview_rum_header
         
     | 
| 
       29 
27 
     | 
    
         | 
| 
       30 
28 
     | 
    
         
             
                  def traceview_rum_footer
         
     | 
| 
       31 
     | 
    
         
            -
                     
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
                       
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
                        return raw(@@rum_ftr_tmpl)
         
     | 
| 
       37 
     | 
    
         
            -
                      end
         
     | 
| 
       38 
     | 
    
         
            -
                    rescue StandardError => e
         
     | 
| 
       39 
     | 
    
         
            -
                      TraceView.logger.warn "traceview_rum_footer: #{e.message}."
         
     | 
| 
       40 
     | 
    
         
            -
                      return ""
         
     | 
| 
      
 29 
     | 
    
         
            +
                    return unless TraceView::Config.rum_id
         
     | 
| 
      
 30 
     | 
    
         
            +
                    if TraceView.tracing?
         
     | 
| 
      
 31 
     | 
    
         
            +
                      # Even though the footer template is named xxxx.erb, there are no ERB tags in it so we'll
         
     | 
| 
      
 32 
     | 
    
         
            +
                      # skip that step for now
         
     | 
| 
      
 33 
     | 
    
         
            +
                      return raw(@@rum_ftr_tmpl)
         
     | 
| 
       41 
34 
     | 
    
         
             
                    end
         
     | 
| 
      
 35 
     | 
    
         
            +
                  rescue StandardError => e
         
     | 
| 
      
 36 
     | 
    
         
            +
                    TraceView.logger.warn "traceview_rum_footer: #{e.message}."
         
     | 
| 
      
 37 
     | 
    
         
            +
                    return ''
         
     | 
| 
       42 
38 
     | 
    
         
             
                  end
         
     | 
| 
       43 
39 
     | 
    
         
             
                  alias_method :oboe_rum_footer, :traceview_rum_footer
         
     | 
| 
       44 
40 
     | 
    
         
             
                end # Helpers
         
     | 
| 
         @@ -47,7 +43,7 @@ module TraceView 
     | 
|
| 
       47 
43 
     | 
    
         
             
                  # Force load the TraceView Rails initializer if there is one
         
     | 
| 
       48 
44 
     | 
    
         
             
                  # Prefer traceview.rb but give priority to the legacy tracelytics.rb if it exists
         
     | 
| 
       49 
45 
     | 
    
         
             
                  if ::Rails::VERSION::MAJOR > 2
         
     | 
| 
       50 
     | 
    
         
            -
                    rails_root = "#{::Rails.root 
     | 
| 
      
 46 
     | 
    
         
            +
                    rails_root = "#{::Rails.root}"
         
     | 
| 
       51 
47 
     | 
    
         
             
                  else
         
     | 
| 
       52 
48 
     | 
    
         
             
                    rails_root = "#{RAILS_ROOT}"
         
     | 
| 
       53 
49 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -55,16 +51,16 @@ module TraceView 
     | 
|
| 
       55 
51 
     | 
    
         
             
                  #
         
     | 
| 
       56 
52 
     | 
    
         
             
                  # We've been through 3 initializer names.  Try each one.
         
     | 
| 
       57 
53 
     | 
    
         
             
                  #
         
     | 
| 
       58 
     | 
    
         
            -
                  if File. 
     | 
| 
      
 54 
     | 
    
         
            +
                  if File.exist?("#{rails_root}/config/initializers/tracelytics.rb")
         
     | 
| 
       59 
55 
     | 
    
         
             
                    tr_initializer = "#{rails_root}/config/initializers/tracelytics.rb"
         
     | 
| 
       60 
56 
     | 
    
         | 
| 
       61 
     | 
    
         
            -
                  elsif File. 
     | 
| 
      
 57 
     | 
    
         
            +
                  elsif File.exist?("#{rails_root}/config/initializers/oboe.rb")
         
     | 
| 
       62 
58 
     | 
    
         
             
                    tr_initializer = "#{rails_root}/config/initializers/oboe.rb"
         
     | 
| 
       63 
59 
     | 
    
         | 
| 
       64 
60 
     | 
    
         
             
                  else
         
     | 
| 
       65 
61 
     | 
    
         
             
                    tr_initializer = "#{rails_root}/config/initializers/traceview.rb"
         
     | 
| 
       66 
62 
     | 
    
         
             
                  end
         
     | 
| 
       67 
     | 
    
         
            -
                  require tr_initializer if File. 
     | 
| 
      
 63 
     | 
    
         
            +
                  require tr_initializer if File.exist?(tr_initializer)
         
     | 
| 
       68 
64 
     | 
    
         
             
                end
         
     | 
| 
       69 
65 
     | 
    
         | 
| 
       70 
66 
     | 
    
         
             
                def self.load_instrumentation
         
     | 
| 
         @@ -94,7 +90,6 @@ module TraceView 
     | 
|
| 
       94 
90 
     | 
    
         
             
                    ActionView::Base.send :include, TraceView::Rails::Helpers
         
     | 
| 
       95 
91 
     | 
    
         
             
                  end
         
     | 
| 
       96 
92 
     | 
    
         
             
                end
         
     | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
       98 
93 
     | 
    
         
             
              end # Rails
         
     | 
| 
       99 
94 
     | 
    
         
             
            end # TraceView
         
     | 
| 
       100 
95 
     | 
    
         | 
| 
         @@ -104,18 +99,17 @@ if defined?(::Rails) 
     | 
|
| 
       104 
99 
     | 
    
         
             
              if ::Rails::VERSION::MAJOR > 2
         
     | 
| 
       105 
100 
     | 
    
         
             
                module TraceView
         
     | 
| 
       106 
101 
     | 
    
         
             
                  class Railtie < ::Rails::Railtie
         
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
102 
     | 
    
         
             
                    initializer 'traceview.helpers' do
         
     | 
| 
       109 
103 
     | 
    
         
             
                      TraceView::Rails.include_helpers
         
     | 
| 
       110 
104 
     | 
    
         
             
                    end
         
     | 
| 
       111 
105 
     | 
    
         | 
| 
       112 
106 
     | 
    
         
             
                    initializer 'traceview.rack' do |app|
         
     | 
| 
       113 
     | 
    
         
            -
                      TraceView.logger.info  
     | 
| 
       114 
     | 
    
         
            -
                      app.config.middleware.insert 0,  
     | 
| 
      
 107 
     | 
    
         
            +
                      TraceView.logger.info '[traceview/loading] Instrumenting rack' if TraceView::Config[:verbose]
         
     | 
| 
      
 108 
     | 
    
         
            +
                      app.config.middleware.insert 0, 'TraceView::Rack'
         
     | 
| 
       115 
109 
     | 
    
         
             
                    end
         
     | 
| 
       116 
110 
     | 
    
         | 
| 
       117 
111 
     | 
    
         
             
                    config.after_initialize do
         
     | 
| 
       118 
     | 
    
         
            -
                      TraceView.logger = ::Rails.logger if ::Rails.logger
         
     | 
| 
      
 112 
     | 
    
         
            +
                      TraceView.logger = ::Rails.logger if ::Rails.logger && !ENV.key?('TRACEVIEW_GEM_TEST')
         
     | 
| 
       119 
113 
     | 
    
         | 
| 
       120 
114 
     | 
    
         
             
                      TraceView::Loading.load_access_key
         
     | 
| 
       121 
115 
     | 
    
         
             
                      TraceView::Inst.load_instrumentation
         
     | 
| 
         @@ -133,8 +127,8 @@ if defined?(::Rails) 
     | 
|
| 
       133 
127 
     | 
    
         
             
                TraceView::Loading.load_access_key
         
     | 
| 
       134 
128 
     | 
    
         | 
| 
       135 
129 
     | 
    
         
             
                Rails.configuration.after_initialize do
         
     | 
| 
       136 
     | 
    
         
            -
                  TraceView.logger.info  
     | 
| 
       137 
     | 
    
         
            -
                  Rails.configuration.middleware.insert 0,  
     | 
| 
      
 130 
     | 
    
         
            +
                  TraceView.logger.info '[traceview/loading] Instrumenting rack' if TraceView::Config[:verbose]
         
     | 
| 
      
 131 
     | 
    
         
            +
                  Rails.configuration.middleware.insert 0, 'TraceView::Rack'
         
     | 
| 
       138 
132 
     | 
    
         | 
| 
       139 
133 
     | 
    
         
             
                  TraceView::Inst.load_instrumentation
         
     | 
| 
       140 
134 
     | 
    
         
             
                  TraceView::Rails.load_instrumentation
         
     | 
| 
         @@ -27,7 +27,7 @@ module TraceView 
     | 
|
| 
       27 
27 
     | 
    
         
             
                          report_kvs[:LineNumber]   = __LINE__
         
     | 
| 
       28 
28 
     | 
    
         
             
                        rescue StandardError => e
         
     | 
| 
       29 
29 
     | 
    
         
             
                          ::TraceView.logger.debug e.message
         
     | 
| 
       30 
     | 
    
         
            -
                          ::TraceView.logger.debug e.backtrace.join( 
     | 
| 
      
 30 
     | 
    
         
            +
                          ::TraceView.logger.debug e.backtrace.join(', ')
         
     | 
| 
       31 
31 
     | 
    
         
             
                        end
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
       33 
33 
     | 
    
         
             
                        TraceView::API.profile(name, report_kvs, false) do
         
     | 
| 
         @@ -85,7 +85,7 @@ if defined?(::Sinatra) 
     | 
|
| 
       85 
85 
     | 
    
         | 
| 
       86 
86 
     | 
    
         
             
              # When in the gem TEST environment, we load this instrumentation regardless.
         
     | 
| 
       87 
87 
     | 
    
         
             
              # Otherwise, only when Padrino isn't around.
         
     | 
| 
       88 
     | 
    
         
            -
              unless defined?(::Padrino)  
     | 
| 
      
 88 
     | 
    
         
            +
              unless defined?(::Padrino) && !ENV.key?('TRACEVIEW_GEM_TEST')
         
     | 
| 
       89 
89 
     | 
    
         
             
                # Padrino has 'enhanced' routes and rendering so the Sinatra
         
     | 
| 
       90 
90 
     | 
    
         
             
                # instrumentation won't work anyways.  Only load for pure Sinatra apps.
         
     | 
| 
       91 
91 
     | 
    
         
             
                ::TraceView::Util.send_include(::Sinatra::Base,      ::TraceView::Sinatra::Base)
         
     | 
    
        data/lib/traceview/inst/dalli.rb
    CHANGED
    
    | 
         @@ -50,7 +50,7 @@ module TraceView 
     | 
|
| 
       50 
50 
     | 
    
         
             
                  end
         
     | 
| 
       51 
51 
     | 
    
         | 
| 
       52 
52 
     | 
    
         
             
                  def get_multi_with_traceview(*keys)
         
     | 
| 
       53 
     | 
    
         
            -
                    return get_multi_without_traceview(keys) unless TraceView.tracing?
         
     | 
| 
      
 53 
     | 
    
         
            +
                    return get_multi_without_traceview(*keys) unless TraceView.tracing?
         
     | 
| 
       54 
54 
     | 
    
         | 
| 
       55 
55 
     | 
    
         
             
                    info_kvs = {}
         
     | 
| 
       56 
56 
     | 
    
         | 
| 
         @@ -60,13 +60,12 @@ module TraceView 
     | 
|
| 
       60 
60 
     | 
    
         
             
                      if @servers.is_a?(Array) && !@servers.empty?
         
     | 
| 
       61 
61 
     | 
    
         
             
                        info_kvs[:RemoteHost] = @servers.join(", ")
         
     | 
| 
       62 
62 
     | 
    
         
             
                      end
         
     | 
| 
       63 
     | 
    
         
            -
                    rescue
         
     | 
| 
       64 
     | 
    
         
            -
                      TraceView.logger.debug "[traceview/debug]  
     | 
| 
       65 
     | 
    
         
            -
                      TraceView.logger.debug e.backtrace
         
     | 
| 
      
 63 
     | 
    
         
            +
                    rescue => e
         
     | 
| 
      
 64 
     | 
    
         
            +
                      TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
         
     | 
| 
       66 
65 
     | 
    
         
             
                    end
         
     | 
| 
       67 
66 
     | 
    
         | 
| 
       68 
67 
     | 
    
         
             
                    TraceView::API.trace('memcache', { :KVOp => :get_multi }, :get_multi) do
         
     | 
| 
       69 
     | 
    
         
            -
                      values = get_multi_without_traceview(keys)
         
     | 
| 
      
 68 
     | 
    
         
            +
                      values = get_multi_without_traceview(*keys)
         
     | 
| 
       70 
69 
     | 
    
         | 
| 
       71 
70 
     | 
    
         
             
                      info_kvs[:KVHitCount] = values.length
         
     | 
| 
       72 
71 
     | 
    
         
             
                      info_kvs[:Backtrace] = TraceView::API.backtrace if TraceView::Config[:dalli][:collect_backtraces]
         
     | 
| 
         @@ -0,0 +1,92 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Copyright (c) 2015 AppNeta, Inc.
         
     | 
| 
      
 2 
     | 
    
         
            +
            # All rights reserved.
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            if defined?(::Delayed)
         
     | 
| 
      
 5 
     | 
    
         
            +
              module TraceView
         
     | 
| 
      
 6 
     | 
    
         
            +
                module Inst
         
     | 
| 
      
 7 
     | 
    
         
            +
                  module DelayedJob
         
     | 
| 
      
 8 
     | 
    
         
            +
                    ##
         
     | 
| 
      
 9 
     | 
    
         
            +
                    # ForkHandler
         
     | 
| 
      
 10 
     | 
    
         
            +
                    #
         
     | 
| 
      
 11 
     | 
    
         
            +
                    # Since delayed job doesn't offer a hook into `after_fork`, we alias the method
         
     | 
| 
      
 12 
     | 
    
         
            +
                    # here to do our magic after a fork happens.
         
     | 
| 
      
 13 
     | 
    
         
            +
                    #
         
     | 
| 
      
 14 
     | 
    
         
            +
                    module ForkHandler
         
     | 
| 
      
 15 
     | 
    
         
            +
                      def self.extended(klass)
         
     | 
| 
      
 16 
     | 
    
         
            +
                        ::TraceView::Util.class_method_alias(klass, :after_fork, ::Delayed::Worker)
         
     | 
| 
      
 17 
     | 
    
         
            +
                      end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                      def after_fork_with_traceview
         
     | 
| 
      
 20 
     | 
    
         
            +
                        ::TraceView.logger.info '[traceview/delayed_job] Detected fork.  Restarting TraceView reporter.' if TraceView::Config[:verbose]
         
     | 
| 
      
 21 
     | 
    
         
            +
                        ::TraceView::Reporter.restart unless ENV.key?('TRACEVIEW_GEM_TEST')
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                        after_fork_without_traceview
         
     | 
| 
      
 24 
     | 
    
         
            +
                      end
         
     | 
| 
      
 25 
     | 
    
         
            +
                    end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                    ##
         
     | 
| 
      
 28 
     | 
    
         
            +
                    # TraceView::Inst::DelayedJob::Plugin
         
     | 
| 
      
 29 
     | 
    
         
            +
                    #
         
     | 
| 
      
 30 
     | 
    
         
            +
                    # The TraceView DelayedJob plugin.  Here we wrap `enqueue` and
         
     | 
| 
      
 31 
     | 
    
         
            +
                    # `perform` to capture the timing of the bits we're interested
         
     | 
| 
      
 32 
     | 
    
         
            +
                    # in.
         
     | 
| 
      
 33 
     | 
    
         
            +
                    #
         
     | 
| 
      
 34 
     | 
    
         
            +
                    class Plugin < Delayed::Plugin
         
     | 
| 
      
 35 
     | 
    
         
            +
                      callbacks do |lifecycle|
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                        # enqueue
         
     | 
| 
      
 38 
     | 
    
         
            +
                        if TraceView::Config[:delayed_jobclient][:enabled]
         
     | 
| 
      
 39 
     | 
    
         
            +
                          lifecycle.around(:enqueue) do |job, &block|
         
     | 
| 
      
 40 
     | 
    
         
            +
                            begin
         
     | 
| 
      
 41 
     | 
    
         
            +
                              report_kvs = {}
         
     | 
| 
      
 42 
     | 
    
         
            +
                              report_kvs[:Spec] = :pushq
         
     | 
| 
      
 43 
     | 
    
         
            +
                              report_kvs[:Flavor] = :DelayedJob
         
     | 
| 
      
 44 
     | 
    
         
            +
                              report_kvs[:JobName] = job.name
         
     | 
| 
      
 45 
     | 
    
         
            +
                              report_kvs[:MsgID] = job.id
         
     | 
| 
      
 46 
     | 
    
         
            +
                              report_kvs[:Queue] = job.queue if job.queue
         
     | 
| 
      
 47 
     | 
    
         
            +
                              report_kvs['Backtrace'] = TV::API.backtrace if TV::Config[:delayed_jobclient][:collect_backtraces]
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                              TraceView::API.trace('delayed_job-client', report_kvs) do
         
     | 
| 
      
 50 
     | 
    
         
            +
                                block.call(job)
         
     | 
| 
      
 51 
     | 
    
         
            +
                              end
         
     | 
| 
      
 52 
     | 
    
         
            +
                            end
         
     | 
| 
      
 53 
     | 
    
         
            +
                          end
         
     | 
| 
      
 54 
     | 
    
         
            +
                        end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                        # invoke_job
         
     | 
| 
      
 57 
     | 
    
         
            +
                        if TraceView::Config[:delayed_jobworker][:enabled]
         
     | 
| 
      
 58 
     | 
    
         
            +
                          lifecycle.around(:perform) do |worker, job, &block|
         
     | 
| 
      
 59 
     | 
    
         
            +
                            begin
         
     | 
| 
      
 60 
     | 
    
         
            +
                              report_kvs = {}
         
     | 
| 
      
 61 
     | 
    
         
            +
                              report_kvs[:Spec] = :job
         
     | 
| 
      
 62 
     | 
    
         
            +
                              report_kvs[:Flavor] = :DelayedJob
         
     | 
| 
      
 63 
     | 
    
         
            +
                              report_kvs[:JobName] = job.name
         
     | 
| 
      
 64 
     | 
    
         
            +
                              report_kvs[:MsgID] = job.id
         
     | 
| 
      
 65 
     | 
    
         
            +
                              report_kvs[:Queue] = job.queue if job.queue
         
     | 
| 
      
 66 
     | 
    
         
            +
                              report_kvs['Backtrace'] = TV::API.backtrace if TV::Config[:delayed_jobworker][:collect_backtraces]
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                              # DelayedJob Specific KVs
         
     | 
| 
      
 69 
     | 
    
         
            +
                              report_kvs[:priority] = job.priority
         
     | 
| 
      
 70 
     | 
    
         
            +
                              report_kvs[:attempts] = job.attempts
         
     | 
| 
      
 71 
     | 
    
         
            +
                              report_kvs[:WorkerName] = job.locked_by
         
     | 
| 
      
 72 
     | 
    
         
            +
                            rescue => e
         
     | 
| 
      
 73 
     | 
    
         
            +
                              TV.logger.warn "[traceview/warning] inst/delayed_job.rb: #{e.message}"
         
     | 
| 
      
 74 
     | 
    
         
            +
                            end
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
                            result = TraceView::API.start_trace('delayed_job-worker', nil, report_kvs) do
         
     | 
| 
      
 77 
     | 
    
         
            +
                              block.call(worker, job)
         
     | 
| 
      
 78 
     | 
    
         
            +
                              TV::API.log_exception(nil, job.error) if job.error
         
     | 
| 
      
 79 
     | 
    
         
            +
                            end
         
     | 
| 
      
 80 
     | 
    
         
            +
                            result[0]
         
     | 
| 
      
 81 
     | 
    
         
            +
                          end
         
     | 
| 
      
 82 
     | 
    
         
            +
                        end
         
     | 
| 
      
 83 
     | 
    
         
            +
                      end
         
     | 
| 
      
 84 
     | 
    
         
            +
                    end
         
     | 
| 
      
 85 
     | 
    
         
            +
                  end
         
     | 
| 
      
 86 
     | 
    
         
            +
                end
         
     | 
| 
      
 87 
     | 
    
         
            +
              end
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
              ::TraceView.logger.info '[traceview/loading] Instrumenting delayed_job' if TraceView::Config[:verbose]
         
     | 
| 
      
 90 
     | 
    
         
            +
              ::TraceView::Util.send_extend(::Delayed::Worker, ::TraceView::Inst::DelayedJob::ForkHandler)
         
     | 
| 
      
 91 
     | 
    
         
            +
              ::Delayed::Worker.plugins << ::TraceView::Inst::DelayedJob::Plugin
         
     | 
| 
      
 92 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/traceview/inst/excon.rb
    CHANGED
    
    | 
         @@ -64,7 +64,7 @@ module TraceView 
     | 
|
| 
       64 
64 
     | 
    
         
             
                      # Avoid cross host tracing for blacklisted domains
         
     | 
| 
       65 
65 
     | 
    
         
             
                      blacklisted = TraceView::API.blacklisted?(@data[:hostname])
         
     | 
| 
       66 
66 
     | 
    
         | 
| 
       67 
     | 
    
         
            -
                      req_context = TraceView::Context.toString 
     | 
| 
      
 67 
     | 
    
         
            +
                      req_context = TraceView::Context.toString
         
     | 
| 
       68 
68 
     | 
    
         
             
                      @data[:headers]['X-Trace'] = req_context unless blacklisted
         
     | 
| 
       69 
69 
     | 
    
         | 
| 
       70 
70 
     | 
    
         
             
                      kvs = traceview_collect(params)
         
     | 
| 
         @@ -84,8 +84,8 @@ module TraceView 
     | 
|
| 
       84 
84 
     | 
    
         
             
                        kvs['HTTPStatus'] = response.status
         
     | 
| 
       85 
85 
     | 
    
         | 
| 
       86 
86 
     | 
    
         
             
                        # If we get a redirect, report the location header
         
     | 
| 
       87 
     | 
    
         
            -
                        if ((300..308).to_a.include? response.status.to_i) && response.headers.key?( 
     | 
| 
       88 
     | 
    
         
            -
                          kvs[ 
     | 
| 
      
 87 
     | 
    
         
            +
                        if ((300..308).to_a.include? response.status.to_i) && response.headers.key?('Location')
         
     | 
| 
      
 88 
     | 
    
         
            +
                          kvs['Location'] = response.headers['Location']
         
     | 
| 
       89 
89 
     | 
    
         
             
                        end
         
     | 
| 
       90 
90 
     | 
    
         | 
| 
       91 
91 
     | 
    
         
             
                        if response_context && !blacklisted
         
     | 
| 
         @@ -1,3 +1,6 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Copyright (c) 2014 AppNeta, Inc.
         
     | 
| 
      
 2 
     | 
    
         
            +
            # All rights reserved.
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       1 
4 
     | 
    
         
             
            module TraceView
         
     | 
| 
       2 
5 
     | 
    
         
             
              module Inst
         
     | 
| 
       3 
6 
     | 
    
         
             
                module FaradayConnection
         
     | 
| 
         @@ -9,7 +12,7 @@ module TraceView 
     | 
|
| 
       9 
12 
     | 
    
         
             
                    # Only send service KVs if we're not using the Net::HTTP adapter
         
     | 
| 
       10 
13 
     | 
    
         
             
                    # Otherwise, the Net::HTTP instrumentation will send the service KVs
         
     | 
| 
       11 
14 
     | 
    
         
             
                    handle_service = !@builder.handlers.include?(Faraday::Adapter::NetHttp) &&
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
                                     !@builder.handlers.include?(Faraday::Adapter::Excon)
         
     | 
| 
       13 
16 
     | 
    
         
             
                    TraceView::API.log_entry('faraday')
         
     | 
| 
       14 
17 
     | 
    
         | 
| 
       15 
18 
     | 
    
         
             
                    result = run_request_without_traceview(method, url, body, headers, &block)
         
     | 
    
        data/lib/traceview/inst/mongo.rb
    CHANGED
    
    | 
         @@ -56,7 +56,8 @@ if defined?(::Mongo) && TraceView::Config[:mongo][:enabled] 
     | 
|
| 
       56 
56 
     | 
    
         
             
                          report_kvs[:Collection] = args[0]          if m == :drop_collection
         
     | 
| 
       57 
57 
     | 
    
         | 
| 
       58 
58 
     | 
    
         
             
                          report_kvs[:Backtrace] = TraceView::API.backtrace if TraceView::Config[:mongo][:collect_backtraces]
         
     | 
| 
       59 
     | 
    
         
            -
                        rescue
         
     | 
| 
      
 59 
     | 
    
         
            +
                        rescue => e
         
     | 
| 
      
 60 
     | 
    
         
            +
                          TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
         
     | 
| 
       60 
61 
     | 
    
         
             
                        end
         
     | 
| 
       61 
62 
     | 
    
         | 
| 
       62 
63 
     | 
    
         
             
                        TraceView::API.trace('mongo', report_kvs) do
         
     | 
| 
         @@ -97,7 +98,8 @@ if defined?(::Mongo) && TraceView::Config[:mongo][:enabled] 
     | 
|
| 
       97 
98 
     | 
    
         
             
                            end
         
     | 
| 
       98 
99 
     | 
    
         
             
                            report_kvs[:Limit] = @limit if @limit != 0
         
     | 
| 
       99 
100 
     | 
    
         
             
                          end
         
     | 
| 
       100 
     | 
    
         
            -
                        rescue
         
     | 
| 
      
 101 
     | 
    
         
            +
                        rescue => e
         
     | 
| 
      
 102 
     | 
    
         
            +
                          TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
         
     | 
| 
       101 
103 
     | 
    
         
             
                        end
         
     | 
| 
       102 
104 
     | 
    
         | 
| 
       103 
105 
     | 
    
         
             
                        TraceView::API.trace('mongo', report_kvs) do
         
     | 
| 
         @@ -162,7 +164,8 @@ if defined?(::Mongo) && TraceView::Config[:mongo][:enabled] 
     | 
|
| 
       162 
164 
     | 
    
         
             
                              report_kvs[:Multi] = args[2][:multi] if args[2] && args[2].key?(:multi)
         
     | 
| 
       163 
165 
     | 
    
         
             
                            end
         
     | 
| 
       164 
166 
     | 
    
         
             
                          end
         
     | 
| 
       165 
     | 
    
         
            -
                        rescue
         
     | 
| 
      
 167 
     | 
    
         
            +
                        rescue => e
         
     | 
| 
      
 168 
     | 
    
         
            +
                          TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
         
     | 
| 
       166 
169 
     | 
    
         
             
                        end
         
     | 
| 
       167 
170 
     | 
    
         | 
| 
       168 
171 
     | 
    
         
             
                        TraceView::API.trace('mongo', report_kvs) do
         
     | 
| 
         @@ -200,7 +203,8 @@ if defined?(::Mongo) && TraceView::Config[:mongo][:enabled] 
     | 
|
| 
       200 
203 
     | 
    
         
             
                              end
         
     | 
| 
       201 
204 
     | 
    
         
             
                            end
         
     | 
| 
       202 
205 
     | 
    
         
             
                          end
         
     | 
| 
       203 
     | 
    
         
            -
                        rescue
         
     | 
| 
      
 206 
     | 
    
         
            +
                        rescue => e
         
     | 
| 
      
 207 
     | 
    
         
            +
                          TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
         
     | 
| 
       204 
208 
     | 
    
         
             
                        end
         
     | 
| 
       205 
209 
     | 
    
         | 
| 
       206 
210 
     | 
    
         
             
                        TraceView::API.trace('mongo', report_kvs) do
         
     | 
| 
         @@ -221,7 +225,8 @@ if defined?(::Mongo) && TraceView::Config[:mongo][:enabled] 
     | 
|
| 
       221 
225 
     | 
    
         
             
                          if [:create_index, :ensure_index, :drop_index].include?(m) && !args.empty?
         
     | 
| 
       222 
226 
     | 
    
         
             
                            report_kvs[:Index] = args[0].to_json
         
     | 
| 
       223 
227 
     | 
    
         
             
                          end
         
     | 
| 
       224 
     | 
    
         
            -
                        rescue
         
     | 
| 
      
 228 
     | 
    
         
            +
                        rescue => e
         
     | 
| 
      
 229 
     | 
    
         
            +
                          TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
         
     | 
| 
       225 
230 
     | 
    
         
             
                        end
         
     | 
| 
       226 
231 
     | 
    
         | 
| 
       227 
232 
     | 
    
         
             
                        TraceView::API.trace('mongo', report_kvs) do
         
     | 
    
        data/lib/traceview/inst/moped.rb
    CHANGED
    
    | 
         @@ -58,7 +58,7 @@ if defined?(::Moped) && TraceView::Config[:moped][:enabled] 
     | 
|
| 
       58 
58 
     | 
    
         
             
                          report_kvs = extract_trace_details(:map_reduce)
         
     | 
| 
       59 
59 
     | 
    
         
             
                          report_kvs[:Map_Function] = command[:map]
         
     | 
| 
       60 
60 
     | 
    
         
             
                          report_kvs[:Reduce_Function] = command[:reduce]
         
     | 
| 
       61 
     | 
    
         
            -
                        rescue  
     | 
| 
      
 61 
     | 
    
         
            +
                        rescue => e
         
     | 
| 
       62 
62 
     | 
    
         
             
                          TraceView.logger.debug "[traceview/debug] Moped KV collection error: #{e.inspect}"
         
     | 
| 
       63 
63 
     | 
    
         
             
                        end
         
     | 
| 
       64 
64 
     | 
    
         | 
| 
         @@ -117,7 +117,7 @@ if defined?(::Moped) && TraceView::Config[:moped][:enabled] 
     | 
|
| 
       117 
117 
     | 
    
         
             
                    end
         
     | 
| 
       118 
118 
     | 
    
         | 
| 
       119 
119 
     | 
    
         
             
                    def create_with_traceview(key, options = {})
         
     | 
| 
       120 
     | 
    
         
            -
                      return create_without_traceview(key, options 
     | 
| 
      
 120 
     | 
    
         
            +
                      return create_without_traceview(key, options) unless TraceView.tracing?
         
     | 
| 
       121 
121 
     | 
    
         | 
| 
       122 
122 
     | 
    
         
             
                      begin
         
     | 
| 
       123 
123 
     | 
    
         
             
                        # We report :create_index here to be consistent
         
     | 
| 
         @@ -135,7 +135,7 @@ if defined?(::Moped) && TraceView::Config[:moped][:enabled] 
     | 
|
| 
       135 
135 
     | 
    
         
             
                    end
         
     | 
| 
       136 
136 
     | 
    
         | 
| 
       137 
137 
     | 
    
         
             
                    def drop_with_traceview(key = nil)
         
     | 
| 
       138 
     | 
    
         
            -
                      return drop_without_traceview(key 
     | 
| 
      
 138 
     | 
    
         
            +
                      return drop_without_traceview(key) unless TraceView.tracing?
         
     | 
| 
       139 
139 
     | 
    
         | 
| 
       140 
140 
     | 
    
         
             
                      begin
         
     | 
| 
       141 
141 
     | 
    
         
             
                        # We report :drop_indexes here to be consistent
         
     | 
| 
         @@ -451,7 +451,7 @@ if defined?(::Moped) && TraceView::Config[:moped][:enabled] 
     | 
|
| 
       451 
451 
     | 
    
         
             
                    end
         
     | 
| 
       452 
452 
     | 
    
         | 
| 
       453 
453 
     | 
    
         
             
                    def aggregate_with_traceview(*pipeline)
         
     | 
| 
       454 
     | 
    
         
            -
                      return aggregate_without_traceview(pipeline) unless TraceView.tracing?
         
     | 
| 
      
 454 
     | 
    
         
            +
                      return aggregate_without_traceview(*pipeline) unless TraceView.tracing?
         
     | 
| 
       455 
455 
     | 
    
         | 
| 
       456 
456 
     | 
    
         
             
                      report_kvs = extract_trace_details(:aggregate)
         
     | 
| 
       457 
457 
     | 
    
         
             
                      report_kvs[:Query] = pipeline
         
     | 
    
        data/lib/traceview/inst/redis.rb
    CHANGED
    
    | 
         @@ -88,9 +88,7 @@ module TraceView 
     | 
|
| 
       88 
88 
     | 
    
         | 
| 
       89 
89 
     | 
    
         
             
                        if KV_COLLECT_MAP[op]
         
     | 
| 
       90 
90 
     | 
    
         
             
                          # Extract KVs from command for this op
         
     | 
| 
       91 
     | 
    
         
            -
                          KV_COLLECT_MAP[op].each { |k, v|
         
     | 
| 
       92 
     | 
    
         
            -
                            kvs[k] = command[v]
         
     | 
| 
       93 
     | 
    
         
            -
                          }
         
     | 
| 
      
 91 
     | 
    
         
            +
                          KV_COLLECT_MAP[op].each { |k, v| kvs[k] = command[v] }
         
     | 
| 
       94 
92 
     | 
    
         
             
                        else
         
     | 
| 
       95 
93 
     | 
    
         
             
                          # This case statement handle special cases not handled
         
     | 
| 
       96 
94 
     | 
    
         
             
                          # by KV_COLLECT_MAP
         
     | 
| 
         @@ -107,10 +105,10 @@ module TraceView 
     | 
|
| 
       107 
105 
     | 
    
         
             
                                options = command[3..-1]
         
     | 
| 
       108 
106 
     | 
    
         
             
                                until (opts = options.shift(2)).empty?
         
     | 
| 
       109 
107 
     | 
    
         
             
                                  case opts[0]
         
     | 
| 
       110 
     | 
    
         
            -
                                  when  
     | 
| 
       111 
     | 
    
         
            -
                                  when  
     | 
| 
       112 
     | 
    
         
            -
                                  when  
     | 
| 
       113 
     | 
    
         
            -
                                  when  
     | 
| 
      
 108 
     | 
    
         
            +
                                  when 'EX' then; kvs[:ex] = opts[1]
         
     | 
| 
      
 109 
     | 
    
         
            +
                                  when 'PX' then; kvs[:px] = opts[1]
         
     | 
| 
      
 110 
     | 
    
         
            +
                                  when 'NX' then; kvs[:nx] = opts[1]
         
     | 
| 
      
 111 
     | 
    
         
            +
                                  when 'XX' then; kvs[:xx] = opts[1]
         
     | 
| 
       114 
112 
     | 
    
         
             
                                  end
         
     | 
| 
       115 
113 
     | 
    
         
             
                                end
         
     | 
| 
       116 
114 
     | 
    
         
             
                              end
         
     |