appoptics_apm 4.8.3 → 4.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +6 -1
  3. data/.rubocop.yml +27 -6
  4. data/.travis.yml +23 -16
  5. data/CONFIG.md +1 -1
  6. data/Gemfile +6 -6
  7. data/appoptics_apm.gemspec +6 -2
  8. data/examples/SDK/01_basic_tracing.rb +1 -1
  9. data/ext/oboe_metal/extconf.rb +4 -2
  10. data/ext/oboe_metal/noop/noop.c +2 -1
  11. data/ext/oboe_metal/src/VERSION +1 -1
  12. data/lib/appoptics_apm.rb +1 -3
  13. data/lib/appoptics_apm/api.rb +0 -1
  14. data/lib/appoptics_apm/api/logging.rb +6 -2
  15. data/lib/appoptics_apm/api/tracing.rb +4 -0
  16. data/lib/appoptics_apm/api/util.rb +5 -7
  17. data/lib/appoptics_apm/config.rb +16 -5
  18. data/lib/appoptics_apm/frameworks/grape.rb +3 -2
  19. data/lib/appoptics_apm/frameworks/padrino.rb +7 -37
  20. data/lib/appoptics_apm/frameworks/rails.rb +0 -1
  21. data/lib/appoptics_apm/frameworks/rails/inst/action_controller.rb +4 -4
  22. data/lib/appoptics_apm/frameworks/rails/inst/action_controller6.rb +50 -0
  23. data/lib/appoptics_apm/frameworks/rails/inst/action_view.rb +12 -25
  24. data/lib/appoptics_apm/frameworks/rails/inst/active_record.rb +3 -3
  25. data/lib/appoptics_apm/frameworks/rails/inst/connection_adapters/utils.rb +1 -1
  26. data/lib/appoptics_apm/frameworks/rails/inst/connection_adapters/utils5x.rb +1 -1
  27. data/lib/appoptics_apm/frameworks/sinatra.rb +4 -33
  28. data/lib/appoptics_apm/inst/curb.rb +6 -6
  29. data/lib/appoptics_apm/inst/faraday.rb +16 -4
  30. data/lib/appoptics_apm/inst/graphql.rb +215 -0
  31. data/lib/appoptics_apm/inst/rack.rb +11 -11
  32. data/lib/appoptics_apm/oboe_init_options.rb +17 -4
  33. data/lib/appoptics_apm/sdk/custom_metrics.rb +2 -0
  34. data/lib/appoptics_apm/sdk/logging.rb +1 -1
  35. data/lib/appoptics_apm/sdk/tracing.rb +120 -2
  36. data/lib/appoptics_apm/support/transaction_metrics.rb +1 -0
  37. data/lib/appoptics_apm/support/transaction_settings.rb +40 -15
  38. data/lib/appoptics_apm/support/x_trace_options.rb +110 -0
  39. data/lib/appoptics_apm/version.rb +2 -2
  40. data/lib/appoptics_apm/xtrace.rb +7 -7
  41. data/lib/oboe_metal.rb +1 -1
  42. data/lib/rails/generators/appoptics_apm/install_generator.rb +23 -21
  43. data/lib/rails/generators/appoptics_apm/templates/appoptics_apm_initializer.rb +68 -30
  44. metadata +37 -17
  45. data/Rakefile +0 -232
  46. data/build_gem.sh +0 -15
  47. data/build_gem_upload_to_packagecloud.sh +0 -15
  48. data/lib/appoptics_apm/api/profiling.rb +0 -203
  49. data/lib/appoptics_apm/frameworks/rails/inst/action_controller3.rb +0 -55
  50. data/lib/appoptics_apm/frameworks/rails/inst/action_view_30.rb +0 -50
  51. data/lib/appoptics_apm/legacy_method_profiling.rb +0 -90
  52. data/lib/appoptics_apm/method_profiling.rb +0 -33
  53. data/lib/oboe/README +0 -2
  54. data/lib/oboe/backward_compatibility.rb +0 -80
  55. data/lib/oboe/inst/rack.rb +0 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5c27f1f8e2eb4cd26fb79201841a19fd805a4121001b9d384a81854834990778
4
- data.tar.gz: bf80c6401e81c17c4566ed597a3e94ad653f93f719583a0f47e2f5d3ca15af5c
3
+ metadata.gz: 10400db84a2a1a68fb58d21e3242c39377cc334d18cbd8ed5df1f47f5708787b
4
+ data.tar.gz: 0ca5bfa1737e1dc75e63d8b3f97af692a305620554428ac379eada53c802842b
5
5
  SHA512:
6
- metadata.gz: 0c198e1f9288bb934e97da00f10e69dd1a599d106b6e5e22940eb225c553d1e205cde734d71896ef3b63547fd03094f8846b627fd01ce73ff688818b3cb7465c
7
- data.tar.gz: d326e1d4ad5689f97164709a68e5e4d7083b5879c4de3d5f966f1c7729a598f58c660264b31096724ea4c9038246f3579177338857f7d409f7bb8467acfdb0cf
6
+ metadata.gz: c59d11940602ab5e3d36b6b0809c4247ac7217ea335904b4b18bff5cd7b601e650d3f696d4e4146fe919b0f4a5f725a199711d50fd4b25a8ca14478a4d88df00
7
+ data.tar.gz: 6dfaea0bfe049cccaefbd174433d22918d0516c9e6ddb7c6b2503cbb11cea86848cf9b8efb26546ebf738df3c6daf8f3e8dbacbf5d691116ecd1e736e91dd5cd
data/.gitignore CHANGED
@@ -1,5 +1,5 @@
1
1
  oboe*.gem
2
- Gemfile.lock
2
+ *.lock
3
3
  gemfiles/*.lock
4
4
  .ruby-version
5
5
  *~
@@ -27,3 +27,8 @@ coverage
27
27
  doc
28
28
  .*byebug*
29
29
  gemfiles/vendor*
30
+ scrap*
31
+ .irbrc
32
+ *.code-workspace
33
+ .irb_history
34
+ .bundle/
@@ -1,8 +1,29 @@
1
- Metrics/LineLength:
2
- Max: 120
1
+ Style/StringLiterals:
2
+ Description: 'Checks if uses of quotes match the configured preference.'
3
+ StyleGuide: '#consistent-string-literals'
4
+ Enabled: false
3
5
 
4
- Style/HashSyntax:
5
- EnforcedStyle: hash_rockets
6
+ Layout/LineLength:
7
+ Description: 'Limit lines to 80 characters.'
8
+ Enabled: false
6
9
 
7
- Layout/TrailingWhitespace:
8
- Enabled: false
10
+ Naming/VariableNumber:
11
+ Description: 'Use the configured style when numbering variables.'
12
+ Enabled: false
13
+
14
+ Style/FrozenStringLiteralComment:
15
+ Description: >-
16
+ Add the frozen_string_literal comment to the top of files
17
+ to help transition to frozen string literals by default.
18
+ Enabled: false
19
+
20
+ Style/Documentation:
21
+ Description: 'Document classes and non-namespace modules.'
22
+ Enabled: false
23
+
24
+ Style/WordArray:
25
+ EnforcedStyle: brackets
26
+
27
+ Metrics/BlockLength:
28
+ Exclude:
29
+ - test/*/*_test.rb
@@ -11,9 +11,10 @@ env:
11
11
  - DBTYPE=mysql
12
12
 
13
13
  rvm:
14
- - 2.6.3
14
+ - 2.6.4
15
15
  - 2.5.5
16
16
  - 2.4.5
17
+ - 2.7.0
17
18
  - ruby-head
18
19
  # - jruby-9.0.5.0
19
20
 
@@ -23,6 +24,7 @@ gemfile:
23
24
  - gemfiles/instrumentation_mocked.gemfile
24
25
  - gemfiles/instrumentation_mocked_oldgems.gemfile
25
26
  - gemfiles/frameworks.gemfile
27
+ - gemfiles/rails60.gemfile
26
28
  - gemfiles/rails52.gemfile
27
29
  - gemfiles/rails42.gemfile
28
30
  - gemfiles/delayed_job.gemfile
@@ -32,18 +34,23 @@ matrix:
32
34
  exclude:
33
35
  - rvm: ruby-head
34
36
  gemfile: gemfiles/rails42.gemfile
35
- - rvm: 2.6.3
37
+ - rvm: 2.7.0-preview2
36
38
  gemfile: gemfiles/rails42.gemfile
39
+ - rvm: 2.6.4
40
+ gemfile: gemfiles/rails42.gemfile
41
+ - rvm: 2.4.5
42
+ gemfile: gemfiles/rails60.gemfile
37
43
 
38
-
39
- - rmv: 2.6.3
44
+ - rvm: ruby-head
45
+ env: DBTYPE=mysql
46
+ - rvm: 2.7.0-preview2
47
+ env: DBTYPE=mysql
48
+ - rvm: 2.6.4
40
49
  env: DBTYPE=mysql
41
50
  - rvm: 2.5.5
42
51
  env: DBTYPE=mysql
43
52
  - rvm: 2.4.5
44
53
  env: DBTYPE=mysql
45
- - rvm: ruby-head
46
- env: DBTYPE=mysql
47
54
 
48
55
  - gemfile: gemfiles/unit.gemfile
49
56
  env: DBTYPE=mysql
@@ -57,10 +64,10 @@ matrix:
57
64
  env: DBTYPE=mysql
58
65
  - gemfile: gemfiles/frameworks.gemfile
59
66
  env: DBTYPE=mysql
60
- - gemfile: gemfiles/rails51.gemfile
61
- env: DBTYPE=mysql
62
67
  - gemfile: gemfiles/rails52.gemfile
63
68
  env: DBTYPE=mysql
69
+ - gemfile: gemfiles/rails60.gemfile
70
+ env: DBTYPE=mysql
64
71
  - gemfile: gemfiles/delayed_job.gemfile
65
72
  env: DBTYPE=mysql
66
73
 
@@ -80,6 +87,7 @@ matrix:
80
87
  env: DBTYPE=mysql2
81
88
  allow_failures:
82
89
  - rvm: ruby-head
90
+ - rvm: 2.7.0
83
91
 
84
92
  # FIXME: Figure out if this is still an issue when reviewing cassandra test setup
85
93
  # Attempt Travis/Cassandra fix re: https://github.com/travis-ci/travis-ci/issues/1484
@@ -96,9 +104,9 @@ matrix:
96
104
  # - sudo service cassandra start
97
105
 
98
106
  install:
99
- - curl -LO http://kent.dl.sourceforge.net/project/swig/swig/swig-3.0.8/swig-3.0.8.tar.gz
100
- - tar xzf swig-3.0.8.tar.gz
101
- - pushd swig-3.0.8
107
+ - curl -LO http://kent.dl.sourceforge.net/project/swig/swig/swig-3.0.12/swig-3.0.12.tar.gz
108
+ - tar xzf swig-3.0.12.tar.gz
109
+ - pushd swig-3.0.12
102
110
  - ./configure && make && sudo make install
103
111
  - popd
104
112
 
@@ -109,17 +117,16 @@ before_script:
109
117
  - export APPOPTICS_REPORTER_FILE_SINGLE=false
110
118
  - export APPOPTICS_TOKEN_BUCKET_CAPACITY=1000
111
119
  - export APPOPTICS_TOKEN_BUCKET_RATE=1000
112
- - export OBOE_VERSION=5.1.1
120
+ - export APPOPTICS_FROM_S3=true
121
+
113
122
  - bundle update --jobs=3 --retry=3
114
- - bundle exec rake fetch_ext_deps
115
- - bundle exec rake clean
116
- - bundle exec rake compile
123
+ - bundle exec rake clean fetch compile
117
124
  - psql -c 'create database travis_ci_test;' -U postgres
118
125
  - mysql -e 'create database travis_ci_test;'
119
126
  - redis-server --requirepass secret_pass &
120
127
  - sleep 10
121
128
 
122
- script: "N=1 bundle exec rake test"
129
+ script: "bundle exec rake test"
123
130
 
124
131
  services:
125
132
  - mongodb
data/CONFIG.md CHANGED
@@ -17,7 +17,7 @@ Name | Description | Default
17
17
 
18
18
  Name | Description | Default
19
19
  ---- | ----------- | -------
20
- `APPOPTICS_GEM_TEST` | puts the gem in test mode. Traces are written to /tmp/trace_output.bson. | `false`
20
+ `APPOPTICS_GEM_TEST` | puts the gem in test mode to avoid restarting certain background services used in testing. `false`
21
21
  `DBTYPE` | For tests on Ruby on Rails, specifies the database type to test against. `postgres`, `mysql` and `mysql2` are valid options. | `postgres`
22
22
  `APPOPTICS_CASSANDRA_SERVER` | specifies the Cassandra server to test against. | `127.0.0.1:9160`
23
23
  `APPOPTICS_MONGO_SERVER` | specifies the Mongo server to test against. | `127.0.0.1:27017`
data/Gemfile CHANGED
@@ -1,7 +1,7 @@
1
1
  source 'https://rubygems.org'
2
+ gem 'rake'
2
3
 
3
4
  group :development, :test do
4
- gem 'rake'
5
5
  gem 'minitest'
6
6
  gem 'minitest-reporters', '< 1.0.18'
7
7
  gem 'minitest-debugger', :require => false
@@ -18,12 +18,12 @@ group :development, :test do
18
18
  gem 'byebug'
19
19
  gem 'get_process_mem'
20
20
  gem 'memory_profiler'
21
- end
22
21
 
23
- if defined?(JRUBY_VERSION)
24
- gem 'sinatra', :require => false
25
- else
26
- gem 'sinatra'
22
+ if defined?(JRUBY_VERSION)
23
+ gem 'sinatra', :require => false
24
+ else
25
+ gem 'sinatra'
26
+ end
27
27
  end
28
28
 
29
29
  gemspec
@@ -6,7 +6,7 @@ Gem::Specification.new do |s|
6
6
  s.version = AppOpticsAPM::Version::STRING
7
7
  s.date = Time.now.strftime('%Y-%m-%d')
8
8
 
9
- s.license = "Librato Open License, Version 1.0"
9
+ s.license = "Librato Open License, Version 1.0, https://bit.ly/2Kmm0mN"
10
10
 
11
11
  s.authors = ["Maia Engeli", "Peter Giacomo Lombardo", "Spiros Eliopoulos"]
12
12
  s.email = %q{support@appoptics.com}
@@ -32,6 +32,9 @@ Automatic tracing and metrics for Ruby applications. Get started at appoptics.co
32
32
  'ext/oboe_metal/src/bson/bson.h',
33
33
  'ext/oboe_metal/src/bson/platform_hacks.h',
34
34
  'ext/oboe_metal/src/VERSION']
35
+ s.files -= ['build_gem.sh',
36
+ 'build_gem_upload_to_packagecloud.sh',
37
+ 'Rakefile']
35
38
 
36
39
  # TODO this is commented out util we can actually provide gems for different platforms
37
40
  # it will create a gem that goes into noop on Darwin and other unsupported platforms
@@ -51,9 +54,10 @@ Automatic tracing and metrics for Ruby applications. Get started at appoptics.co
51
54
  unless defined?(JRUBY_VERSION)
52
55
  s.add_development_dependency('byebug', '>= 8.0.0')
53
56
  s.add_development_dependency('minitest-hooks', '>= 1.5.0')
57
+ s.add_development_dependency('minitest-focus', '>=1.1.2')
54
58
  s.add_development_dependency('benchmark-ips', '>= 2.7.2')
55
59
  end
56
60
 
57
- s.required_ruby_version = '>= 2.0.0'
61
+ s.required_ruby_version = '>= 2.4.0'
58
62
  s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
59
63
  end
@@ -7,7 +7,7 @@
7
7
  # `bundle exec ruby 01_basic_tracing.rb`
8
8
 
9
9
  require 'appoptics_apm'
10
- unless AppopticsAPM::SDK.appoptics_ready?(10_000)
10
+ unless AppOpticsAPM::SDK.appoptics_ready?(10_000)
11
11
  puts "aborting!!! Agent not ready after 10 seconds"
12
12
  exit false
13
13
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Copyright (c) 2016 SolarWinds, LLC.
2
4
  # All rights reserved.
3
5
 
@@ -20,7 +22,7 @@ ao_include = File.join(ext_dir, 'src')
20
22
  version = File.read(File.join(ao_include, 'VERSION')).chomp
21
23
  if ENV['APPOPTICS_FROM_S3'].to_s.downcase == 'true'
22
24
  ao_path = File.join('https://s3-us-west-2.amazonaws.com/rc-files-t2/c-lib/', version)
23
- puts "Fetching c-lib from S3"
25
+ puts 'Fetching c-lib from S3'
24
26
  else
25
27
  ao_path = File.join('https://files.appoptics.com/c-lib', version)
26
28
  end
@@ -29,7 +31,7 @@ ao_arch = 'x86_64'
29
31
  if File.exist?('/etc/alpine-release')
30
32
  version = open('/etc/alpine-release').read.chomp
31
33
  ao_arch =
32
- if Gem::Version.new(version) < Gem::Version.new('3.9')
34
+ if Gem::Version.new(version) < Gem::Version.new('3.9')
33
35
  'alpine-libressl-x86_64'
34
36
  else # openssl
35
37
  'alpine-x86_64'
@@ -3,5 +3,6 @@
3
3
  /* ruby calls this to load the extension */
4
4
  void Init_oboe_noop(void) {
5
5
  /* assume we haven't yet defined Hola */
6
- VALUE klass = rb_define_class("OboeNoop", rb_cObject);
6
+ // VALUE klass = rb_define_class("OboeNoop", rb_cObject);
7
+ rb_define_class("OboeNoop", rb_cObject);
7
8
  }
@@ -1 +1 @@
1
- 5.1.1
1
+ 7.1.0
@@ -43,12 +43,11 @@ begin
43
43
 
44
44
  # appoptics_apm/loading can set AppOpticsAPM.loaded = false if the service key is not working
45
45
  require 'appoptics_apm/loading'
46
- require 'appoptics_apm/legacy_method_profiling'
47
- require 'appoptics_apm/method_profiling'
48
46
 
49
47
  if AppOpticsAPM.loaded
50
48
  require 'appoptics_apm/instrumentation'
51
49
  require 'appoptics_apm/support/transaction_metrics'
50
+ require 'appoptics_apm/support/x_trace_options'
52
51
 
53
52
  # Frameworks
54
53
  require 'appoptics_apm/frameworks/rails'
@@ -68,7 +67,6 @@ begin
68
67
  # Load Ruby module last. If there is no framework detected,
69
68
  # it will load all of the Ruby instrumentation
70
69
  require 'appoptics_apm/ruby'
71
- require 'oboe/backward_compatibility'
72
70
 
73
71
  require 'appoptics_apm/test' if ENV['APPOPTICS_GEM_TEST']
74
72
  rescue => e
@@ -6,7 +6,6 @@ module AppOpticsAPM
6
6
  module API
7
7
  extend AppOpticsAPM::API::Logging
8
8
  extend AppOpticsAPM::API::Metrics
9
- extend AppOpticsAPM::API::Profiling
10
9
  extend AppOpticsAPM::API::LayerInit
11
10
  extend AppOpticsAPM::API::Util
12
11
 
@@ -55,7 +55,7 @@ module AppOpticsAPM
55
55
  # ==== Arguments
56
56
  #
57
57
  # * +layer+ - The layer the reported event belongs to
58
- # * +exception+ - The exception to report
58
+ # * +exception+ - The exception to report, responds to :message and :backtrace(optional)
59
59
  # * +opts+ - Custom params if you want to log extra information
60
60
  #
61
61
  # ==== Example
@@ -80,7 +80,10 @@ module AppOpticsAPM
80
80
  opts.merge!(:Spec => 'error',
81
81
  :ErrorClass => exception.class.name,
82
82
  :ErrorMsg => exception.message)
83
- opts.merge!(:Backtrace => exception.backtrace.join("\r\n")) if exception.backtrace
83
+
84
+ if exception.respond_to?(:backtrace) && exception.backtrace
85
+ opts.merge!(:Backtrace => exception.backtrace.join("\r\n"))
86
+ end
84
87
 
85
88
  exception.instance_variable_set(:@exn_logged, true)
86
89
  log(layer, :error, opts)
@@ -205,6 +208,7 @@ module AppOpticsAPM
205
208
  def log_info(layer, opts = {})
206
209
  return AppOpticsAPM::Context.toString unless AppOpticsAPM.tracing?
207
210
 
211
+ opts[:Spec] = 'info'
208
212
  log_event(layer, :info, AppOpticsAPM::Context.createEvent, opts)
209
213
  end
210
214
 
@@ -48,6 +48,10 @@ module AppOpticsAPM
48
48
  [start_trace_with_target(span, xtrace, target, opts) { yield }, target['X-Trace']]
49
49
  end
50
50
 
51
+ def profile_method(*args)
52
+ AppOpticsAPM.logger.warn("DEPRECATED: AppOpticsAPM::API.profile_method is deprecated. Use: AppOpticsAPM::SDK::trace_method")
53
+ AppOpticsAPM::SDK.trace_method(*args)
54
+ end
51
55
  end
52
56
  end
53
57
  end
@@ -24,16 +24,14 @@ module AppOpticsAPM
24
24
 
25
25
  # Internal: Get the current backtrace.
26
26
  #
27
- # ignore - Number of frames to ignore at the top of the backtrace. Use
28
- # when you know how many layers deep in the key call is being
29
- # made.
27
+ # from - int, from position in array of backtraces
28
+ # to - int, end position in array of backtraces, can be negative to count from the end
30
29
  #
31
30
  # Returns a string with each frame of the backtrace separated by '\r\n'.
32
31
  #
33
- def backtrace(ignore = 0)
32
+ def backtrace(from = 0, to = -1)
34
33
  bt = Kernel.caller
35
- bt.slice!(0, ignore)
36
- trim_backtrace(bt).join("\r\n")
34
+ trim_backtrace(bt[from..to]).join("\r\n")
37
35
  end
38
36
 
39
37
  # Internal: Trim a backtrace to a manageable size
@@ -115,7 +113,7 @@ module AppOpticsAPM
115
113
  end
116
114
 
117
115
  def xtrace_v2?(xtr)
118
- return xtr && xtr.start_with?('2B')
116
+ xtr && xtr.start_with?('2B')
119
117
  end
120
118
  end
121
119
  end
@@ -16,13 +16,20 @@ module AppOpticsAPM
16
16
  @@instrumentation = [:action_controller, :action_controller_api, :action_view,
17
17
  :active_record, :bunnyclient, :bunnyconsumer, :cassandra, :curb,
18
18
  :dalli, :delayed_jobclient, :delayed_jobworker,
19
- :em_http_request, :excon, :faraday, :grpc_client, :grpc_server, :grape,
19
+ :excon, :faraday, :graphql, :grpc_client, :grpc_server, :grape,
20
20
  :httpclient, :nethttp, :memcached, :mongo, :moped, :padrino, :rack, :redis,
21
21
  :resqueclient, :resqueworker, :rest_client,
22
22
  :sequel, :sidekiqclient, :sidekiqworker, :sinatra, :typhoeus]
23
23
 
24
+ # ignore configs for instrumentations we don't have anymore
25
+ # can't remove because the config may still be present in configs created
26
+ # with previous gem versions
27
+ @@ignore = [:em_http_request]
28
+
24
29
  # Subgrouping of instrumentation
25
- @@http_clients = [:curb, :excon, :em_http_request, :faraday, :httpclient, :nethttp, :rest_client, :typhoeus]
30
+ @@http_clients = [:curb, :excon,
31
+ # :em_http_request,
32
+ :faraday, :httpclient, :nethttp, :rest_client, :typhoeus]
26
33
 
27
34
  ##
28
35
  # load_config_file
@@ -136,7 +143,7 @@ module AppOpticsAPM
136
143
  #
137
144
  # rubocop:disable Metrics/AbcSize
138
145
  def self.initialize(_data = {})
139
- @@instrumentation.each { |k| @@config[k] = {} }
146
+ (@@instrumentation+@@ignore).each { |k| @@config[k] = {} }
140
147
  @@config[:transaction_name] = {}
141
148
 
142
149
  # Always load the template, it has all the keys and defaults defined,
@@ -240,11 +247,15 @@ module AppOpticsAPM
240
247
  end
241
248
 
242
249
  elsif key == :tracing_mode
243
- # CAN'T DO THIS ANYMORE, ALL TRACING COMMUNICATION TO OBOE
250
+ # CAN'T DO `set_tracing_mode` ANYMORE, ALL TRACING COMMUNICATION TO OBOE
244
251
  # IS NOW HANDLED BY TransactionSettings
245
252
  # AppOpticsAPM.set_tracing_mode(value.to_sym) if AppOpticsAPM.loaded
246
253
 
247
- # Make sure that the mode is stored as a symbol
254
+ # Make sure that the mode is stored as a symbol
255
+ @@config[key.to_sym] = value.to_sym
256
+
257
+ elsif key == :trigger_tracing_mode
258
+ # Make sure that the mode is stored as a symbol
248
259
  @@config[key.to_sym] = value.to_sym
249
260
  end
250
261
  end
@@ -53,7 +53,8 @@ module AppOpticsAPM
53
53
  end
54
54
 
55
55
  def error_response_with_appoptics(error = {})
56
- status, headers, body = error_response_without_appoptics(error)
56
+ response = error_response_without_appoptics(error)
57
+ status, headers, _body = response.finish
57
58
 
58
59
  xtrace = AppOpticsAPM::Context.toString
59
60
 
@@ -77,7 +78,7 @@ module AppOpticsAPM
77
78
  end
78
79
  end
79
80
 
80
- [status, headers, body]
81
+ response
81
82
  end
82
83
  end
83
84
  end