newrelic_rpm 6.2.0.354 → 6.3.0.355

Sign up to get free protection for your applications and to get access to all the features.
Files changed (28) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +17 -0
  3. data/CHANGELOG.md +35 -6
  4. data/lib/new_relic/agent/agent.rb +38 -130
  5. data/lib/new_relic/agent/configuration/default_source.rb +49 -10
  6. data/lib/new_relic/agent/configuration/event_data.rb +39 -0
  7. data/lib/new_relic/agent/configuration/server_source.rb +11 -1
  8. data/lib/new_relic/agent/connect/request_builder.rb +63 -0
  9. data/lib/new_relic/agent/connect/response_handler.rb +61 -0
  10. data/lib/new_relic/agent/hostname.rb +1 -1
  11. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +3 -7
  12. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +161 -0
  13. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +7 -0
  14. data/lib/new_relic/agent/instrumentation/evented_subscriber.rb +34 -3
  15. data/lib/new_relic/agent/instrumentation/{rails5 → rails_notifications}/action_cable.rb +3 -3
  16. data/lib/new_relic/agent/instrumentation/{rails5 → rails_notifications}/action_controller.rb +3 -3
  17. data/lib/new_relic/agent/instrumentation/{rails5 → rails_notifications}/action_view.rb +3 -3
  18. data/lib/new_relic/agent/parameter_filtering.rb +18 -5
  19. data/lib/new_relic/control/class_methods.rb +7 -1
  20. data/lib/new_relic/control/frameworks/{rails5.rb → rails_notifications.rb} +1 -1
  21. data/lib/new_relic/version.rb +1 -1
  22. data/test/agent_helper.rb +11 -5
  23. metadata +10 -11
  24. data/lib/new_relic/agent/instrumentation/active_record_4.rb +0 -42
  25. data/lib/new_relic/agent/instrumentation/active_record_5.rb +0 -41
  26. data/lib/new_relic/agent/instrumentation/rails4/action_controller.rb +0 -32
  27. data/lib/new_relic/agent/instrumentation/rails4/action_view.rb +0 -27
  28. data/lib/new_relic/control/frameworks/rails6.rb +0 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 61ee707dd3738565b01b05857ed9ae7de00a6ab3e9cc0522ba5d651819c24634
4
- data.tar.gz: e8b630ad8f1c69a51dae797a046f90bd8d87683dcc4a2fb97f2960dcf6f90b4b
3
+ metadata.gz: 0fad72be0a10cec48b242b8759e92676245a18b92be032e21dd7f652fcc78da2
4
+ data.tar.gz: 159a8569cf9b0c5caa5a8f5e89811325f9a5a47ac68dfd942e332ec945b43325
5
5
  SHA512:
6
- metadata.gz: 9ee286b42523ceca71287a9463a6e6a66e825f27956fd460c72aacb640780a20db0e5c688951f2d0a4bb648a4d8bd5dad98220d1f5a98e9abcc51843bd71aa1e
7
- data.tar.gz: 1a5070f668fd0b4f802ee71fe3909c123d0b38a53a1491ec07a496177cf9f392015c95ae62284b086a4fd27952fa0e62a7d720813de09449f5b4b8b8c4331a5e
6
+ metadata.gz: a0a73fa55d266e1daa3ce89941f25ae9cb4b6b9f5a904bdfef4faf837450ff91e2b17ff83e1b870886eefc6bb9b5451ee6bb9f418c4bd2742f63c6e4bcef86ae
7
+ data.tar.gz: 7d15dd7ada137326cf86d53ddba404628fe606be1aab1284e39ae65ff4985bee6efc8c92c727a99a506ecac5b2b7f20dfffc7435cc59954732261b7d88681861
@@ -75,6 +75,7 @@ env:
75
75
  - TYPE=UNIT ENVIRONMENT=rails42
76
76
  - TYPE=UNIT ENVIRONMENT=rails50
77
77
  - TYPE=UNIT ENVIRONMENT=rails51
78
+ - TYPE=UNIT ENVIRONMENT=rails60
78
79
  - TYPE=UNIT ENVIRONMENT=norails
79
80
  - TYPE=FUNCTIONAL GROUP=agent
80
81
  - TYPE=FUNCTIONAL GROUP=api
@@ -127,18 +128,32 @@ matrix:
127
128
  env: TYPE=UNIT ENVIRONMENT=rails40
128
129
  - rvm: 2.4.2
129
130
  env: TYPE=UNIT ENVIRONMENT=rails41
131
+ - rvm: 2.4.2
132
+ env: TYPE=UNIT ENVIRONMENT=rails60
133
+
134
+ # 2.3
135
+ - rvm: 2.3.5
136
+ env: TYPE=UNIT ENVIRONMENT=rails60
137
+
138
+ # 2.2
139
+ - rvm: 2.2.8
140
+ env: TYPE=UNIT ENVIRONMENT=rails60
130
141
 
131
142
  # 2.1
132
143
  - rvm: 2.1.10
133
144
  env: TYPE=UNIT ENVIRONMENT=rails50
134
145
  - rvm: 2.1.10
135
146
  env: TYPE=UNIT ENVIRONMENT=rails51
147
+ - rvm: 2.1.10
148
+ env: TYPE=UNIT ENVIRONMENT=rails60
136
149
 
137
150
  # 2.0
138
151
  - rvm: 2.0.0-p648
139
152
  env: TYPE=UNIT ENVIRONMENT=rails50
140
153
  - rvm: 2.0.0-p648
141
154
  env: TYPE=UNIT ENVIRONMENT=rails51
155
+ - rvm: 2.0.0-p648
156
+ env: TYPE=UNIT ENVIRONMENT=rails60
142
157
 
143
158
  # jruby 9.2.6.0 (Compatible with MRI 2.5)
144
159
  - rvm: jruby-9.2.6.0
@@ -151,3 +166,5 @@ matrix:
151
166
  env: TYPE=UNIT ENVIRONMENT=rails40
152
167
  - rvm: jruby-9.2.6.0
153
168
  env: TYPE=UNIT ENVIRONMENT=rails41
169
+ - rvm: jruby-9.2.6.0
170
+ env: TYPE=UNIT ENVIRONMENT=rails60
@@ -1,19 +1,48 @@
1
1
  # New Relic Ruby Agent Release Notes #
2
2
 
3
+ ## v6.3.0
4
+
5
+ * **Official Rails 6.0 support**
6
+
7
+ This version of the agent has been verified against the Rails 6.0.0 release.
8
+
9
+ As ActiveRecord 4, 5, and 6 use the same New Relic instrumentation, the
10
+ `disable_active_record_4` and `disable_active_record_5` settings in NewRelic.yml are being
11
+ deprecated in favor of the new `disable_active_record_notifications`. This new
12
+ setting will affect the instrumentation of ActiveRecord 4, 5, and 6. The deprecated settings
13
+ will be removed in a future release.
14
+
15
+ * **Bugfix for `newrelic deployments` script**
16
+
17
+ For applications housed in the EU, the `newrelic deployments` script included with previous
18
+ versions of the agent would fail with the following message: `Deployment not recorded:
19
+ Application does not exist.` This is because the script would attempt to send the deployment
20
+ notification to the US region. The deployment script now sends deployments to the correct region.
21
+
22
+ * **Faster ActiveRecord connection resolution**
23
+
24
+ This version of the agent uses the faster ActiveRecord connection resolution that Rails 6.0 uses, even on previous versions of Rails.
25
+ Thanks to Callum Jones for the contribution!
26
+
27
+ * **Support non-ascii characters in hostnames**
28
+
29
+ Previous versions of the agent would frequently log warnings like: `log writing failed. "\xE2" from ASCII-8BIT to UTF-8` if the hostname contained a non-ascii character. This version of the agent will no longer log these warnings.
30
+ Thanks to Rafael Petry for the contribution!
31
+
3
32
  ## v6.2.0
4
33
 
5
34
  * Bugfix for superfluous `Empty JSON response` error messages
6
35
 
7
- Version 6.1.0 of the agent frequently logged error messages about an empty
8
- JSON response, when no error had occurred. These logs no longer appear.
36
+ Version 6.1.0 of the agent frequently logged error messages about an empty
37
+ JSON response, when no error had occurred. These logs no longer appear.
9
38
 
10
39
  * Bugfix for `Unable to calculate elapsed transaction time` warning messages
11
40
 
12
- Ruby Agent versions 5.4 through 6.1, when running in jruby without
13
- ObjectSpace enabled, would occasionally log a warning indicating that the
41
+ Ruby Agent versions 5.4 through 6.1, when running in jruby without
42
+ ObjectSpace enabled, would occasionally log a warning indicating that the
14
43
  agent was unable to calculate the elapsed transaction time. When this log
15
- statement appeared, the affected transactions would not be included in the
16
- data displayed on the capacity analysis page. These transactions are now
44
+ statement appeared, the affected transactions would not be included in the
45
+ data displayed on the capacity analysis page. These transactions are now
17
46
  correctly recorded.
18
47
 
19
48
  ## v6.1.0
@@ -30,6 +30,8 @@ require 'new_relic/agent/utilization_data'
30
30
  require 'new_relic/environment_report'
31
31
  require 'new_relic/agent/attribute_filter'
32
32
  require 'new_relic/agent/adaptive_sampler'
33
+ require 'new_relic/agent/connect/request_builder'
34
+ require 'new_relic/agent/connect/response_handler'
33
35
 
34
36
  module NewRelic
35
37
  module Agent
@@ -74,7 +76,6 @@ module NewRelic
74
76
 
75
77
  @connect_state = :pending
76
78
  @connect_attempts = 0
77
- @environment_report = nil
78
79
  @waited_on_connect = nil
79
80
  @connected_pid = nil
80
81
 
@@ -136,7 +137,7 @@ module NewRelic
136
137
  # Transaction and metric renaming rules as provided by the
137
138
  # collector on connect. The former are applied during txns,
138
139
  # the latter during harvest.
139
- attr_reader :transaction_rules
140
+ attr_accessor :transaction_rules
140
141
  # Responsbile for restarting the harvest thread
141
142
  attr_reader :harvester
142
143
  # GC::Profiler.total_time is not monotonic so we wrap it.
@@ -155,6 +156,10 @@ module NewRelic
155
156
  @transaction_event_recorder.synthetics_event_aggregator
156
157
  end
157
158
 
159
+ def agent_id=(agent_id)
160
+ @service.agent_id = agent_id
161
+ end
162
+
158
163
  # This method should be called in a forked process after a fork.
159
164
  # It assumes the parent process initialized the agent, but does
160
165
  # not assume the agent started.
@@ -476,7 +481,6 @@ module NewRelic
476
481
  @harvester.mark_started
477
482
 
478
483
  unless in_resque_child_process?
479
- generate_environment_report
480
484
  install_exit_handler
481
485
  @harvest_samplers.load_samplers unless Agent.config[:disable_samplers]
482
486
  end
@@ -571,24 +575,6 @@ module NewRelic
571
575
  EventLoop.new
572
576
  end
573
577
 
574
- # Never allow any data type to be reported more frequently than once
575
- # per second.
576
- MIN_ALLOWED_REPORT_PERIOD = 1.0
577
-
578
- def report_period_for(method)
579
- config_key = "data_report_periods.#{method}".to_sym
580
- period = Agent.config[config_key]
581
- if !period
582
- period = Agent.config[:data_report_period]
583
- ::NewRelic::Agent.logger.warn("Could not find configured period for #{method}, falling back to data_report_period (#{period} s)")
584
- end
585
- if period < MIN_ALLOWED_REPORT_PERIOD
586
- ::NewRelic::Agent.logger.warn("Configured #{config_key} was #{period}, but minimum allowed is #{MIN_ALLOWED_REPORT_PERIOD}, using #{MIN_ALLOWED_REPORT_PERIOD}.")
587
- period = MIN_ALLOWED_REPORT_PERIOD
588
- end
589
- period
590
- end
591
-
592
578
  LOG_ONCE_KEYS_RESET_PERIOD = 60.0
593
579
 
594
580
  def create_and_run_event_loop
@@ -603,7 +589,7 @@ module NewRelic
603
589
  ::NewRelic::Agent.logger.clear_already_logged
604
590
  end
605
591
  @event_loop.fire_every(Agent.config[:data_report_period], :report_data)
606
- @event_loop.fire_every(report_period_for(:analytic_event_data), :report_event_data)
592
+ @event_loop.fire_every(Agent.config[:event_report_period], :report_event_data)
607
593
  @event_loop.fire_every(LOG_ONCE_KEYS_RESET_PERIOD, :reset_log_once_keys)
608
594
 
609
595
  @event_loop.run
@@ -768,10 +754,6 @@ module NewRelic
768
754
  shutdown
769
755
  end
770
756
 
771
- def generate_environment_report
772
- @environment_report = environment_for_connect
773
- end
774
-
775
757
  # Checks whether we should send environment info, and if so,
776
758
  # returns the snapshot from the local environment.
777
759
  # Generating the EnvironmentReport has the potential to trigger
@@ -781,93 +763,40 @@ module NewRelic
781
763
  Agent.config[:send_environment_info] ? Array(EnvironmentReport.new) : []
782
764
  end
783
765
 
784
- # We've seen objects in the environment report (Rails.env in
785
- # particular) that can't seralize to JSON. Cope with that here and
786
- # clear out so downstream code doesn't have to check again.
787
- def sanitize_environment_report
788
- if !@service.valid_to_marshal?(@environment_report)
789
- @environment_report = []
790
- end
791
- end
792
-
793
- # Initializes the hash of settings that we send to the
794
- # server. Returns a literal hash containing the options
795
- def connect_settings
796
- sanitize_environment_report
797
-
798
- {
799
- :pid => $$,
800
- :host => local_host,
801
- :display_host => Agent.config[:'process_host.display_name'],
802
- :app_name => Agent.config.app_names,
803
- :language => 'ruby',
804
- :labels => Agent.config.parsed_labels,
805
- :agent_version => NewRelic::VERSION::STRING,
806
- :environment => @environment_report,
807
- :settings => Agent.config.to_collector_hash,
808
- :high_security => Agent.config[:high_security],
809
- :utilization => UtilizationData.new.to_collector_hash,
810
- :identifier => "ruby:#{local_host}:#{Agent.config.app_names.sort.join(',')}"
811
- }
812
- end
813
-
814
- # Returns connect data passed back from the server
766
+ # Builds the payload to send to the connect service,
767
+ # connects, then configures the agent using the response from
768
+ # the connect service
815
769
  def connect_to_server
816
- @service.connect(connect_settings)
817
- end
770
+ request_builder = ::NewRelic::Agent::Connect::RequestBuilder.new(@service, Agent.config)
771
+ connect_response = @service.connect request_builder.connect_payload
818
772
 
819
- # apdex_f is always 4 times the apdex_t
820
- def apdex_f
821
- (4 * Agent.config[:apdex_t]).to_f
822
- end
773
+ response_handler = ::NewRelic::Agent::Connect::ResponseHandler.new(self, Agent.config)
774
+ response_handler.configure_agent(connect_response)
823
775
 
824
- # Sets the collector host and connects to the server, then
825
- # invokes the final configuration with the returned data
826
- def query_server_for_configuration
827
- finish_setup(connect_to_server)
776
+ log_connection connect_response if connect_response
777
+ connect_response
828
778
  end
829
779
 
830
- # Takes a hash of configuration data returned from the
831
- # server and uses it to set local variables and to
832
- # initialize various parts of the agent that are configured
833
- # separately.
834
- #
835
- # Can accommodate most arbitrary data - anything extra is
836
- # ignored unless we say to do something with it here.
837
- def finish_setup(config_data)
838
- return if config_data == nil
839
-
840
- @service.agent_id = config_data['agent_run_id']
841
-
842
- security_policies = config_data.delete('security_policies')
843
-
844
- add_server_side_config(config_data)
845
- add_security_policy_config(security_policies) if security_policies
846
-
847
- log_connection!(config_data)
848
- @transaction_rules = RulesEngine.create_transaction_rules(config_data)
849
- @stats_engine.metric_rules = RulesEngine.create_metric_rules(config_data)
850
-
851
- # If you're adding something else here to respond to the server-side config,
852
- # use Agent.instance.events.subscribe(:finished_configuring) callback instead!
780
+ # Logs when we connect to the server, for debugging purposes
781
+ # - makes sure we know if an agent has not connected
782
+ def log_connection(config_data)
783
+ ::NewRelic::Agent.logger.debug "Connected to NewRelic Service at #{@service.collector.name}"
784
+ ::NewRelic::Agent.logger.debug "Agent Run = #{@service.agent_id}."
785
+ ::NewRelic::Agent.logger.debug "Connection data = #{config_data.inspect}"
786
+ if config_data['messages'] && config_data['messages'].any?
787
+ log_collector_messages(config_data['messages'])
788
+ end
853
789
  end
854
790
 
855
- def add_server_side_config(config_data)
856
- if config_data['agent_config']
857
- ::NewRelic::Agent.logger.debug "Using config from server"
791
+ def log_collector_messages(messages)
792
+ messages.each do |message|
793
+ ::NewRelic::Agent.logger.send(message['level'].downcase, message['message'])
858
794
  end
859
-
860
- ::NewRelic::Agent.logger.debug "Server provided config: #{config_data.inspect}"
861
- server_config = NewRelic::Agent::Configuration::ServerSource.new(config_data, Agent.config)
862
- Agent.config.replace_or_add_config(server_config)
863
795
  end
864
796
 
865
- def add_security_policy_config(security_policies)
866
- ::NewRelic::Agent.logger.info 'Installing security policies'
867
- security_policy_source = NewRelic::Agent::Configuration::SecurityPolicySource.new(security_policies)
868
- Agent.config.replace_or_add_config(security_policy_source)
869
- # drop data collected before applying security policies
870
- drop_buffered_data
797
+ # apdex_f is always 4 times the apdex_t
798
+ def apdex_f
799
+ (4 * Agent.config[:apdex_t]).to_f
871
800
  end
872
801
 
873
802
  class WaitOnConnectTimeout < StandardError
@@ -899,22 +828,6 @@ module NewRelic
899
828
  end
900
829
  end
901
830
 
902
- # Logs when we connect to the server, for debugging purposes
903
- # - makes sure we know if an agent has not connected
904
- def log_connection!(config_data)
905
- ::NewRelic::Agent.logger.debug "Connected to NewRelic Service at #{@service.collector.name}"
906
- ::NewRelic::Agent.logger.debug "Agent Run = #{@service.agent_id}."
907
- ::NewRelic::Agent.logger.debug "Connection data = #{config_data.inspect}"
908
- if config_data['messages'] && config_data['messages'].any?
909
- log_collector_messages(config_data['messages'])
910
- end
911
- end
912
-
913
- def log_collector_messages(messages)
914
- messages.each do |message|
915
- ::NewRelic::Agent.logger.send(message['level'].downcase, message['message'])
916
- end
917
- end
918
831
  end
919
832
  include Connect
920
833
 
@@ -974,7 +887,7 @@ module NewRelic
974
887
  return unless should_connect?(opts[:force_reconnect])
975
888
 
976
889
  ::NewRelic::Agent.logger.debug "Connecting Process to New Relic: #$0"
977
- query_server_for_configuration
890
+ connect_to_server
978
891
  @connected_pid = $$
979
892
  @connect_state = :connected
980
893
  signal_connected
@@ -998,15 +911,6 @@ module NewRelic
998
911
  raise
999
912
  end
1000
913
 
1001
- # Who am I? Well, this method can tell you your hostname.
1002
- def determine_host
1003
- NewRelic::Agent::Hostname.get
1004
- end
1005
-
1006
- def local_host
1007
- @local_host ||= determine_host
1008
- end
1009
-
1010
914
  # Delegates to the control class to determine the root
1011
915
  # directory of this project
1012
916
  def determine_home_directory
@@ -1107,7 +1011,10 @@ module NewRelic
1107
1011
  harvest_and_send_from_container(transaction_event_aggregator, :analytic_event_data)
1108
1012
  harvest_and_send_from_container(synthetics_event_aggregator, :analytic_event_data)
1109
1013
  harvest_and_send_from_container(@custom_event_aggregator, :custom_event_data)
1110
- harvest_and_send_from_container(span_event_aggregator, :span_event_data)
1014
+ end
1015
+
1016
+ def harvest_and_send_span_event_data
1017
+ harvest_and_send_from_container(span_event_aggregator, :span_event_data)
1111
1018
  end
1112
1019
 
1113
1020
  def harvest_and_send_error_event_data
@@ -1167,6 +1074,7 @@ module NewRelic
1167
1074
  harvest_and_send_transaction_traces
1168
1075
  harvest_and_send_slowest_sql
1169
1076
  harvest_and_send_timeslice_data
1077
+ harvest_and_send_span_event_data
1170
1078
 
1171
1079
  check_for_and_handle_agent_commands
1172
1080
  harvest_and_send_for_agent_commands
@@ -91,12 +91,8 @@ module NewRelic
91
91
  :rails
92
92
  when 3
93
93
  :rails3
94
- when 4
95
- :rails4
96
- when 5
97
- :rails5
98
- when 6
99
- :rails6
94
+ when 4..6
95
+ :rails_notifications
100
96
  else
101
97
  ::NewRelic::Agent.logger.error "Detected unsupported Rails version #{Rails::VERSION::STRING}"
102
98
  end
@@ -172,6 +168,16 @@ module NewRelic
172
168
  end
173
169
  end
174
170
 
171
+ def self.api_host
172
+ Proc.new do
173
+ if String(NewRelic::Agent.config[:license_key]).start_with? 'eu'
174
+ 'rpm.eu.newrelic.com'
175
+ else
176
+ 'rpm.newrelic.com'
177
+ end
178
+ end
179
+ end
180
+
175
181
  def self.convert_to_regexp_list(raw_value)
176
182
  value_list = convert_to_list(raw_value)
177
183
  value_list.map do |value|
@@ -472,7 +478,7 @@ module NewRelic
472
478
  :description => "URI for the New Relic data collection service."
473
479
  },
474
480
  :api_host => {
475
- :default => 'rpm.newrelic.com',
481
+ :default => DefaultSource.api_host,
476
482
  :public => false,
477
483
  :type => String,
478
484
  :allowed_from_server => false,
@@ -553,12 +559,20 @@ module NewRelic
553
559
  :public => false,
554
560
  :type => Integer,
555
561
  :allowed_from_server => true,
556
- :description => 'Number of seconds betwixt connections to the New Relic data collection service. Note that transaction events have a separate report period, specified by data_report_periods.analytic_event_data.'
562
+ :description => 'Number of seconds betwixt connections to the New Relic data collection service.'
563
+ },
564
+ :event_report_period => {
565
+ :default => 60,
566
+ :public => false,
567
+ :type => Integer,
568
+ :allowed_from_server => true,
569
+ :description => 'Number of seconds betwixt connections to the New Relic event collection services.'
557
570
  },
558
571
  :'data_report_periods.analytic_event_data' => {
559
572
  :default => 60,
560
573
  :public => false,
561
574
  :type => Integer,
575
+ :deprecated => true,
562
576
  :dynamic_name => true,
563
577
  :allowed_from_server => true,
564
578
  :description => 'Number of seconds between connections to the New Relic data collection service for sending transaction event data.'
@@ -1235,6 +1249,13 @@ module NewRelic
1235
1249
  :allowed_from_server => false,
1236
1250
  :description => 'Controls whether to normalize string encodings prior to serializing data for the collector to JSON.'
1237
1251
  },
1252
+ :backport_fast_active_record_connection_lookup => {
1253
+ :default => true,
1254
+ :public => false,
1255
+ :type => Boolean,
1256
+ :allowed_from_server => false,
1257
+ :description => 'Enables patching of "sql.active_record" AS Notification to include :connection in payload.'
1258
+ },
1238
1259
  :disable_vm_sampler => {
1239
1260
  :default => false,
1240
1261
  :public => true,
@@ -1273,7 +1294,12 @@ module NewRelic
1273
1294
  :type => Boolean,
1274
1295
  :dynamic_name => true,
1275
1296
  :allowed_from_server => false,
1276
- :description => 'If <code>true</code>, disables instrumentation for ActiveRecord 4.'
1297
+ :deprecated => true,
1298
+ :description => 'Deprecated. ' \
1299
+ 'For agent versions 6.3 or higher, ' \
1300
+ 'use <a href="#disable_active_record_notifications"><code>' \
1301
+ 'disable_active_record_notifications' \
1302
+ '</code></a> instead.'
1277
1303
  },
1278
1304
  :disable_active_record_5 => {
1279
1305
  :default => false,
@@ -1281,7 +1307,20 @@ module NewRelic
1281
1307
  :type => Boolean,
1282
1308
  :dynamic_name => true,
1283
1309
  :allowed_from_server => false,
1284
- :description => 'If <code>true</code>, disables instrumentation for ActiveRecord 5.'
1310
+ :deprecated => true,
1311
+ :description => 'Deprecated. ' \
1312
+ 'For agent versions 6.3 or higher, ' \
1313
+ 'use <a href="#disable_active_record_notifications"><code>' \
1314
+ 'disable_active_record_notifications' \
1315
+ '</code></a> instead.'
1316
+ },
1317
+ :disable_active_record_notifications => {
1318
+ :default => false,
1319
+ :public => true,
1320
+ :type => Boolean,
1321
+ :dynamic_name => true,
1322
+ :allowed_from_server => false,
1323
+ :description => 'If <code>true</code>, disables instrumentation for ActiveRecord 4, 5, and 6.'
1285
1324
  },
1286
1325
  :disable_bunny => {
1287
1326
  :default => false,