newrelic_rpm 6.8.0.360 → 6.9.0.363

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +16 -16
  3. data/CHANGELOG.md +64 -0
  4. data/lib/new_relic/agent.rb +6 -5
  5. data/lib/new_relic/agent/agent.rb +43 -36
  6. data/lib/new_relic/agent/attributes.rb +2 -4
  7. data/lib/new_relic/agent/configuration/default_source.rb +23 -22
  8. data/lib/new_relic/agent/configuration/server_source.rb +1 -1
  9. data/lib/new_relic/agent/configuration/yaml_source.rb +1 -1
  10. data/lib/new_relic/agent/database.rb +1 -2
  11. data/lib/new_relic/agent/distributed_tracing.rb +155 -6
  12. data/lib/new_relic/agent/{cross_app_payload.rb → distributed_tracing/cross_app_payload.rb} +0 -0
  13. data/lib/new_relic/agent/{cross_app_tracing.rb → distributed_tracing/cross_app_tracing.rb} +60 -45
  14. data/lib/new_relic/agent/distributed_tracing/distributed_trace_intrinsics.rb +80 -0
  15. data/lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb +75 -0
  16. data/lib/new_relic/agent/{distributed_trace_payload.rb → distributed_tracing/distributed_trace_payload.rb} +19 -28
  17. data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +39 -0
  18. data/lib/new_relic/agent/distributed_tracing/trace_context.rb +246 -0
  19. data/lib/new_relic/agent/{trace_context_payload.rb → distributed_tracing/trace_context_payload.rb} +3 -11
  20. data/lib/new_relic/agent/error_collector.rb +3 -5
  21. data/lib/new_relic/agent/error_event_aggregator.rb +3 -1
  22. data/lib/new_relic/agent/external.rb +7 -7
  23. data/lib/new_relic/agent/instrumentation/action_cable_subscriber.rb +1 -2
  24. data/lib/new_relic/agent/instrumentation/bunny.rb +1 -1
  25. data/lib/new_relic/agent/instrumentation/curb.rb +1 -1
  26. data/lib/new_relic/agent/instrumentation/excon.rb +1 -1
  27. data/lib/new_relic/agent/instrumentation/grape.rb +5 -10
  28. data/lib/new_relic/agent/instrumentation/http.rb +1 -1
  29. data/lib/new_relic/agent/instrumentation/httpclient.rb +1 -1
  30. data/lib/new_relic/agent/instrumentation/net.rb +1 -1
  31. data/lib/new_relic/agent/instrumentation/resque.rb +3 -0
  32. data/lib/new_relic/agent/instrumentation/typhoeus.rb +1 -1
  33. data/lib/new_relic/agent/logging.rb +13 -3
  34. data/lib/new_relic/agent/messaging.rb +5 -73
  35. data/lib/new_relic/agent/method_tracer.rb +3 -2
  36. data/lib/new_relic/agent/method_tracer_helpers.rb +1 -1
  37. data/lib/new_relic/agent/monitors.rb +27 -0
  38. data/lib/new_relic/agent/monitors/cross_app_monitor.rb +110 -0
  39. data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +27 -0
  40. data/lib/new_relic/agent/{inbound_request_monitor.rb → monitors/inbound_request_monitor.rb} +1 -1
  41. data/lib/new_relic/agent/{synthetics_monitor.rb → monitors/synthetics_monitor.rb} +2 -4
  42. data/lib/new_relic/agent/span_event_primitive.rb +25 -29
  43. data/lib/new_relic/agent/sql_sampler.rb +2 -2
  44. data/lib/new_relic/agent/supported_versions.rb +2 -2
  45. data/lib/new_relic/agent/tracer.rb +3 -3
  46. data/lib/new_relic/agent/transaction.rb +21 -28
  47. data/lib/new_relic/agent/transaction/distributed_tracer.rb +171 -0
  48. data/lib/new_relic/agent/transaction/distributed_tracing.rb +61 -69
  49. data/lib/new_relic/agent/transaction/external_request_segment.rb +8 -44
  50. data/lib/new_relic/agent/transaction/message_broker_segment.rb +3 -11
  51. data/lib/new_relic/agent/transaction/trace.rb +2 -4
  52. data/lib/new_relic/agent/transaction/trace_context.rb +88 -79
  53. data/lib/new_relic/agent/transaction/trace_node.rb +2 -5
  54. data/lib/new_relic/agent/transaction_error_primitive.rb +2 -2
  55. data/lib/new_relic/agent/transaction_event_primitive.rb +26 -29
  56. data/lib/new_relic/coerce.rb +5 -3
  57. data/lib/new_relic/constants.rb +34 -0
  58. data/lib/new_relic/noticed_error.rb +2 -4
  59. data/lib/new_relic/rack/browser_monitoring.rb +4 -0
  60. data/lib/new_relic/supportability_helper.rb +14 -0
  61. data/lib/new_relic/version.rb +1 -1
  62. data/lib/tasks/tests.rake +6 -1
  63. data/newrelic_rpm.gemspec +4 -2
  64. data/test/agent_helper.rb +21 -1
  65. metadata +49 -19
  66. data/lib/new_relic/agent/cross_app_monitor.rb +0 -110
  67. data/lib/new_relic/agent/distributed_trace_intrinsics.rb +0 -90
  68. data/lib/new_relic/agent/distributed_trace_metrics.rb +0 -74
  69. data/lib/new_relic/agent/distributed_trace_monitor.rb +0 -30
  70. data/lib/new_relic/agent/distributed_trace_transport_type.rb +0 -43
  71. data/lib/new_relic/agent/trace_context.rb +0 -244
  72. data/lib/new_relic/agent/trace_context_request_monitor.rb +0 -42
@@ -43,16 +43,13 @@ module NewRelic
43
43
  to_debug_str(0)
44
44
  end
45
45
 
46
- EMPTY_HASH = {}.freeze
47
- EMPTY_ARRAY = [].freeze
48
-
49
46
  def to_array
50
- params = @params ? @params : EMPTY_HASH
47
+ params = @params ? @params : NewRelic::EMPTY_HASH
51
48
  [ NewRelic::Helper.time_to_millis(@entry_timestamp),
52
49
  NewRelic::Helper.time_to_millis(@exit_timestamp),
53
50
  NewRelic::Coerce.string(@metric_name),
54
51
  params ] +
55
- [ (@children ? @children.map{|s| s.to_array} : EMPTY_ARRAY) ]
52
+ [ (@children ? @children.map{|s| s.to_array} : NewRelic::EMPTY_ARRAY) ]
56
53
  end
57
54
 
58
55
  def path_string
@@ -8,8 +8,8 @@
8
8
  # the transaction event aggregator and the synthetics container.
9
9
 
10
10
  require 'new_relic/agent/payload_metric_mapping'
11
- require 'new_relic/agent/distributed_trace_payload'
12
- require 'new_relic/agent/distributed_trace_intrinsics'
11
+ require 'new_relic/agent/distributed_tracing/distributed_trace_payload'
12
+ require 'new_relic/agent/distributed_tracing/distributed_trace_intrinsics'
13
13
 
14
14
  module NewRelic
15
15
  module Agent
@@ -1,6 +1,7 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
3
  # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
4
+ # frozen_string_literal: true
4
5
 
5
6
  # This module was introduced and largely extracted from the transaction event aggregator
6
7
  # when the synthetics container was extracted from it. Its purpose is to create the data
@@ -8,7 +9,7 @@
8
9
  # the transaction event aggregator and the synthetics container.
9
10
 
10
11
  require 'new_relic/agent/payload_metric_mapping'
11
- require 'new_relic/agent/distributed_trace_intrinsics'
12
+ require 'new_relic/agent/distributed_tracing/distributed_trace_intrinsics'
12
13
 
13
14
  module NewRelic
14
15
  module Agent
@@ -16,30 +17,28 @@ module NewRelic
16
17
  include NewRelic::Coerce
17
18
  extend self
18
19
 
20
+ COMMA = ','
21
+
19
22
  # The type field of the sample
20
- SAMPLE_TYPE = 'Transaction'.freeze
23
+ SAMPLE_TYPE = 'Transaction'
21
24
 
22
25
  # Strings for static keys of the sample structure
23
- TYPE_KEY = 'type'.freeze
24
- TIMESTAMP_KEY = 'timestamp'.freeze
25
- NAME_KEY = 'name'.freeze
26
- DURATION_KEY = 'duration'.freeze
27
- ERROR_KEY = 'error'.freeze
28
- SAMPLED_KEY = 'sampled'.freeze
29
- PRIORITY_KEY = 'priority'.freeze
30
- GUID_KEY = 'nr.guid'.freeze
31
- REFERRING_TRANSACTION_GUID_KEY = 'nr.referringTransactionGuid'.freeze
32
- CAT_PATH_HASH_KEY = 'nr.pathHash'.freeze
33
- CAT_REFERRING_PATH_HASH_KEY = 'nr.referringPathHash'.freeze
34
- CAT_ALTERNATE_PATH_HASHES_KEY = 'nr.alternatePathHashes'.freeze
35
- APDEX_PERF_ZONE_KEY = 'nr.apdexPerfZone'.freeze
36
- SYNTHETICS_RESOURCE_ID_KEY = "nr.syntheticsResourceId".freeze
37
- SYNTHETICS_JOB_ID_KEY = "nr.syntheticsJobId".freeze
38
- SYNTHETICS_MONITOR_ID_KEY = "nr.syntheticsMonitorId".freeze
39
-
40
-
41
- # To avoid allocations when we have empty custom or agent attributes
42
- EMPTY_HASH = {}.freeze
26
+ TYPE_KEY = 'type'
27
+ TIMESTAMP_KEY = 'timestamp'
28
+ NAME_KEY = 'name'
29
+ DURATION_KEY = 'duration'
30
+ ERROR_KEY = 'error'
31
+ SAMPLED_KEY = 'sampled'
32
+ PRIORITY_KEY = 'priority'
33
+ GUID_KEY = 'nr.guid'
34
+ REFERRING_TRANSACTION_GUID_KEY = 'nr.referringTransactionGuid'
35
+ CAT_PATH_HASH_KEY = 'nr.pathHash'
36
+ CAT_REFERRING_PATH_HASH_KEY = 'nr.referringPathHash'
37
+ CAT_ALTERNATE_PATH_HASHES_KEY = 'nr.alternatePathHashes'
38
+ APDEX_PERF_ZONE_KEY = 'nr.apdexPerfZone'
39
+ SYNTHETICS_RESOURCE_ID_KEY = "nr.syntheticsResourceId"
40
+ SYNTHETICS_JOB_ID_KEY = "nr.syntheticsJobId"
41
+ SYNTHETICS_MONITOR_ID_KEY = "nr.syntheticsMonitorId"
43
42
 
44
43
  def create(payload)
45
44
  intrinsics = {
@@ -53,7 +52,7 @@ module NewRelic
53
52
 
54
53
  intrinsics[SAMPLED_KEY] = payload[:sampled] if payload.key?(:sampled)
55
54
 
56
- NewRelic::Agent::PayloadMetricMapping.append_mapped_metrics(payload[:metrics], intrinsics)
55
+ PayloadMetricMapping.append_mapped_metrics(payload[:metrics], intrinsics)
57
56
  append_optional_attributes(intrinsics, payload)
58
57
  DistributedTraceIntrinsics.copy_to_hash payload, intrinsics
59
58
 
@@ -76,8 +75,6 @@ module NewRelic
76
75
  append_cat_alternate_path_hashes(sample, payload)
77
76
  end
78
77
 
79
- COMMA = ','.freeze
80
-
81
78
  def append_cat_alternate_path_hashes(sample, payload)
82
79
  if payload.include?(:cat_alternate_path_hashes)
83
80
  sample[CAT_ALTERNATE_PATH_HASHES_KEY] = payload[:cat_alternate_path_hashes].sort.join(COMMA)
@@ -92,19 +89,19 @@ module NewRelic
92
89
 
93
90
  def custom_attributes attributes
94
91
  if attributes
95
- result = attributes.custom_attributes_for(NewRelic::Agent::AttributeFilter::DST_TRANSACTION_EVENTS)
92
+ result = attributes.custom_attributes_for(AttributeFilter::DST_TRANSACTION_EVENTS)
96
93
  result.freeze
97
94
  else
98
- EMPTY_HASH
95
+ NewRelic::EMPTY_HASH
99
96
  end
100
97
  end
101
98
 
102
99
  def agent_attributes attributes
103
100
  if attributes
104
- result = attributes.agent_attributes_for(NewRelic::Agent::AttributeFilter::DST_TRANSACTION_EVENTS)
101
+ result = attributes.agent_attributes_for(AttributeFilter::DST_TRANSACTION_EVENTS)
105
102
  result.freeze
106
103
  else
107
- EMPTY_HASH
104
+ NewRelic::EMPTY_HASH
108
105
  end
109
106
  end
110
107
  end
@@ -1,9 +1,11 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
3
  # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
4
+ # frozen_string_literal: true
4
5
 
5
6
  module NewRelic
6
7
  module Coerce
8
+
7
9
  module_function
8
10
 
9
11
  # We really don't want to send bad values to the collector, and it doesn't
@@ -74,13 +76,13 @@ module NewRelic
74
76
  value.to_i
75
77
  end
76
78
 
77
- def float! value
79
+ def float! value, precision=NewRelic::PRIORITY_PRECISION
78
80
  return nil unless value_or_nil(value)
79
- value.to_f
81
+ value.to_f.round(precision)
80
82
  end
81
83
 
82
84
  def value_or_nil value
83
- return nil if value.nil? || value.empty?
85
+ return nil if value.nil? || (value.respond_to?(:empty?) && value.empty?)
84
86
  value
85
87
  end
86
88
 
@@ -0,0 +1,34 @@
1
+ # encoding: utf-8
2
+ # This file is distributed under New Relic's license terms.
3
+ # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
4
+ # frozen_string_literal: true
5
+
6
+ module NewRelic
7
+ PRIORITY_PRECISION = 6
8
+
9
+ EMPTY_ARRAY = [].freeze
10
+ EMPTY_HASH = {}.freeze
11
+ EMPTY_STR = ""
12
+
13
+ HTTP = "HTTP"
14
+ HTTPS = "HTTPS"
15
+ UNKNOWN = "Unknown"
16
+
17
+ FORMAT_NON_RACK = 0
18
+ FORMAT_RACK = 1
19
+
20
+ NEWRELIC_KEY = "newrelic"
21
+ CANDIDATE_NEWRELIC_KEYS = [
22
+ NEWRELIC_KEY,
23
+ 'NEWRELIC',
24
+ 'NewRelic',
25
+ 'Newrelic'
26
+ ].freeze
27
+
28
+ TRACEPARENT_KEY = "traceparent"
29
+ TRACESTATE_KEY = "tracestate"
30
+
31
+ HTTP_TRACEPARENT_KEY = "HTTP_#{TRACEPARENT_KEY.upcase}"
32
+ HTTP_TRACESTATE_KEY = "HTTP_#{TRACESTATE_KEY.upcase}"
33
+ HTTP_NEWRELIC_KEY = "HTTP_#{NEWRELIC_KEY.upcase}"
34
+ end
@@ -81,8 +81,6 @@ class NewRelic::NoticedError
81
81
  AGENT_ATTRIBUTES = "agentAttributes".freeze
82
82
  INTRINSIC_ATTRIBUTES = "intrinsics".freeze
83
83
 
84
- EMPTY_HASH = {}.freeze
85
-
86
84
  DESTINATION = NewRelic::Agent::AttributeFilter::DST_ERROR_COLLECTOR
87
85
 
88
86
  # Note that we process attributes lazily and store the result. This is because
@@ -137,7 +135,7 @@ class NewRelic::NoticedError
137
135
  agent_attributes = if @attributes
138
136
  @attributes.agent_attributes_for(DESTINATION)
139
137
  else
140
- EMPTY_HASH
138
+ NewRelic::EMPTY_HASH
141
139
  end
142
140
 
143
141
  # It's possible to override the request_uri from the transaction attributes
@@ -155,7 +153,7 @@ class NewRelic::NoticedError
155
153
  if @attributes
156
154
  @attributes.intrinsic_attributes_for(DESTINATION)
157
155
  else
158
- EMPTY_HASH
156
+ NewRelic::EMPTY_HASH
159
157
  end
160
158
  end
161
159
 
@@ -21,6 +21,7 @@ module NewRelic::Rack
21
21
 
22
22
  CONTENT_TYPE = 'Content-Type'.freeze
23
23
  CONTENT_DISPOSITION = 'Content-Disposition'.freeze
24
+ CONTENT_LENGTH = 'Content-Length'.freeze
24
25
  ATTACHMENT = 'attachment'.freeze
25
26
  TEXT_HTML = 'text/html'.freeze
26
27
 
@@ -35,6 +36,9 @@ module NewRelic::Rack
35
36
  js_to_inject = NewRelic::Agent.browser_timing_header
36
37
  if (js_to_inject != "") && should_instrument?(env, status, headers)
37
38
  response_string = autoinstrument_source(response, headers, js_to_inject)
39
+ if headers.key?(CONTENT_LENGTH)
40
+ headers[CONTENT_LENGTH] = response_string.size.to_s
41
+ end
38
42
 
39
43
  env[ALREADY_INSTRUMENTED_KEY] = true
40
44
  if response_string
@@ -11,6 +11,8 @@ module NewRelic
11
11
  # transaction, just to eke out a bit less performance hit
12
12
  #
13
13
  API_SUPPORTABILITY_METRICS = [
14
+ :accept_distributed_trace_headers,
15
+ :create_distributed_trace_headers,
14
16
  :add_custom_attributes,
15
17
  :add_instrumentation,
16
18
  :add_method_tracer,
@@ -64,5 +66,17 @@ module NewRelic
64
66
  NewRelic::Agent.logger.debug "API supportability metric not found for :#{method_name}"
65
67
  end
66
68
  end
69
+
70
+ def valid_api_argument_class? arg, name, klass
71
+ return true if arg.is_a?(klass)
72
+
73
+ caller_location = caller_locations.first.label
74
+
75
+ message = "Bad argument passed to ##{caller_location}. " \
76
+ "Expected #{klass} for `#{name}` but got #{headers.class}"
77
+
78
+ NewRelic::Agent.logger.warn message
79
+ nil
80
+ end
67
81
  end
68
82
  end
@@ -11,7 +11,7 @@ module NewRelic
11
11
  end
12
12
 
13
13
  MAJOR = 6
14
- MINOR = 8
14
+ MINOR = 9
15
15
  TINY = 0
16
16
 
17
17
  begin
@@ -26,9 +26,14 @@ if defined? Rake::TestTask
26
26
  agent_home = File.expand_path(File.join(File.dirname(__FILE__),'..','..'))
27
27
 
28
28
  Rake::TestTask.new(:newrelic) do |t|
29
+
30
+ file_pattern = ENV["file"]
31
+ file_pattern = file_pattern.split(",").map{|f| "#{agent_home}/#{f}".gsub("//", "/")} if file_pattern
32
+ file_pattern ||= "#{agent_home}/test/new_relic/**/*_test.rb"
33
+
29
34
  t.libs << "#{agent_home}/test"
30
35
  t.libs << "#{agent_home}/lib"
31
- t.pattern = "#{agent_home}/test/new_relic/**/*_test.rb"
36
+ t.pattern = file_pattern
32
37
  t.verbose = true
33
38
  end
34
39
 
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.version = NewRelic::VERSION::STRING
11
11
  s.required_ruby_version = '>= 2.0.0'
12
12
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
13
- s.authors = [ "Chris Pine", "Rachel Klein", "Justin Foote", "Michael Lang" ]
13
+ s.authors = [ "Chris Pine", "Rachel Klein", "Tanna McClure", "Michael Lang" ]
14
14
  s.date = Time.now.strftime('%Y-%m-%d')
15
15
  s.licenses = ['New Relic']
16
16
  s.description = <<-EOS
@@ -49,10 +49,12 @@ EOS
49
49
  s.summary = "New Relic Ruby Agent"
50
50
 
51
51
  s.add_development_dependency 'rake', '12.3.3'
52
+ s.add_development_dependency 'rb-inotify', '0.9.10' # locked to support < Ruby 2.3 (and listen 3.0.8)
53
+ s.add_development_dependency 'listen', '3.0.8' # locked to support < Ruby 2.3
52
54
  s.add_development_dependency 'minitest', '~> 4.7.5'
53
55
  s.add_development_dependency 'mocha', '~> 1.9.0'
54
56
  s.add_development_dependency 'yard'
55
- s.add_development_dependency 'pry-nav', '~> 0.2.4'
57
+ s.add_development_dependency 'pry-nav', '~> 0.3.0'
56
58
  s.add_development_dependency 'pry-stack_explorer', '~> 0.4.9'
57
59
  s.add_development_dependency 'guard', '~> 2.16.0'
58
60
  s.add_development_dependency 'guard-minitest', '~> 2.4.0'
@@ -345,11 +345,22 @@ def in_transaction(*args, &blk)
345
345
  txn
346
346
  end
347
347
 
348
+ # Temporarily disables default transformer so tests with invalid inputs can be tried
349
+ def with_disabled_defaults_transformer key
350
+ begin
351
+ transformer = NewRelic::Agent::Configuration::DEFAULTS[key][:transform]
352
+ NewRelic::Agent::Configuration::DEFAULTS[key][:transform] = nil
353
+ yield
354
+ ensure
355
+ NewRelic::Agent::Configuration::DEFAULTS[key][:transform] = transformer
356
+ end
357
+ end
358
+
348
359
  # Convenience wrapper to stand up a transaction and provide a segment within
349
360
  # that transaction to work with. The same arguements as provided to in_transaction
350
361
  # may be supplied.
351
362
  def with_segment *args, &blk
352
- in_transaction *args do |txn|
363
+ in_transaction(*args) do |txn|
353
364
  yield txn.current_segment, txn
354
365
  end
355
366
  end
@@ -795,3 +806,12 @@ end
795
806
  def attributes_for(sample, type)
796
807
  sample.attributes.instance_variable_get("@#{type}_attributes")
797
808
  end
809
+
810
+ def uncache_trusted_account_key
811
+ NewRelic::Agent::Transaction::TraceContext::AccountHelpers.instance_variable_set :@trace_state_entry_key, nil
812
+ end
813
+
814
+ def reset_buffers_and_caches
815
+ NewRelic::Agent.drop_buffered_data
816
+ uncache_trusted_account_key
817
+ end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: newrelic_rpm
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.8.0.360
4
+ version: 6.9.0.363
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Pine
8
8
  - Rachel Klein
9
- - Justin Foote
9
+ - Tanna McClure
10
10
  - Michael Lang
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2019-12-19 00:00:00.000000000 Z
14
+ date: 2020-02-19 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rake
@@ -27,6 +27,34 @@ dependencies:
27
27
  - - '='
28
28
  - !ruby/object:Gem::Version
29
29
  version: 12.3.3
30
+ - !ruby/object:Gem::Dependency
31
+ name: rb-inotify
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - '='
35
+ - !ruby/object:Gem::Version
36
+ version: 0.9.10
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - '='
42
+ - !ruby/object:Gem::Version
43
+ version: 0.9.10
44
+ - !ruby/object:Gem::Dependency
45
+ name: listen
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - '='
49
+ - !ruby/object:Gem::Version
50
+ version: 3.0.8
51
+ type: :development
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - '='
56
+ - !ruby/object:Gem::Version
57
+ version: 3.0.8
30
58
  - !ruby/object:Gem::Dependency
31
59
  name: minitest
32
60
  requirement: !ruby/object:Gem::Requirement
@@ -75,14 +103,14 @@ dependencies:
75
103
  requirements:
76
104
  - - "~>"
77
105
  - !ruby/object:Gem::Version
78
- version: 0.2.4
106
+ version: 0.3.0
79
107
  type: :development
80
108
  prerelease: false
81
109
  version_requirements: !ruby/object:Gem::Requirement
82
110
  requirements:
83
111
  - - "~>"
84
112
  - !ruby/object:Gem::Version
85
- version: 0.2.4
113
+ version: 0.3.0
86
114
  - !ruby/object:Gem::Dependency
87
115
  name: pry-stack_explorer
88
116
  requirement: !ruby/object:Gem::Requirement
@@ -221,9 +249,6 @@ files:
221
249
  - lib/new_relic/agent/configuration/yaml_source.rb
222
250
  - lib/new_relic/agent/connect/request_builder.rb
223
251
  - lib/new_relic/agent/connect/response_handler.rb
224
- - lib/new_relic/agent/cross_app_monitor.rb
225
- - lib/new_relic/agent/cross_app_payload.rb
226
- - lib/new_relic/agent/cross_app_tracing.rb
227
252
  - lib/new_relic/agent/custom_event_aggregator.rb
228
253
  - lib/new_relic/agent/database.rb
229
254
  - lib/new_relic/agent/database/explain_plan_helpers.rb
@@ -239,12 +264,15 @@ files:
239
264
  - lib/new_relic/agent/datastores/mongo/statement_formatter.rb
240
265
  - lib/new_relic/agent/datastores/redis.rb
241
266
  - lib/new_relic/agent/deprecator.rb
242
- - lib/new_relic/agent/distributed_trace_intrinsics.rb
243
- - lib/new_relic/agent/distributed_trace_metrics.rb
244
- - lib/new_relic/agent/distributed_trace_monitor.rb
245
- - lib/new_relic/agent/distributed_trace_payload.rb
246
- - lib/new_relic/agent/distributed_trace_transport_type.rb
247
267
  - lib/new_relic/agent/distributed_tracing.rb
268
+ - lib/new_relic/agent/distributed_tracing/cross_app_payload.rb
269
+ - lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb
270
+ - lib/new_relic/agent/distributed_tracing/distributed_trace_intrinsics.rb
271
+ - lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb
272
+ - lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb
273
+ - lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb
274
+ - lib/new_relic/agent/distributed_tracing/trace_context.rb
275
+ - lib/new_relic/agent/distributed_tracing/trace_context_payload.rb
248
276
  - lib/new_relic/agent/encoding_normalizer.rb
249
277
  - lib/new_relic/agent/error_collector.rb
250
278
  - lib/new_relic/agent/error_event_aggregator.rb
@@ -266,7 +294,6 @@ files:
266
294
  - lib/new_relic/agent/http_clients/net_http_wrappers.rb
267
295
  - lib/new_relic/agent/http_clients/typhoeus_wrappers.rb
268
296
  - lib/new_relic/agent/http_clients/uri_util.rb
269
- - lib/new_relic/agent/inbound_request_monitor.rb
270
297
  - lib/new_relic/agent/instrumentation.rb
271
298
  - lib/new_relic/agent/instrumentation/action_cable_subscriber.rb
272
299
  - lib/new_relic/agent/instrumentation/action_controller_subscriber.rb
@@ -335,6 +362,11 @@ files:
335
362
  - lib/new_relic/agent/messaging.rb
336
363
  - lib/new_relic/agent/method_tracer.rb
337
364
  - lib/new_relic/agent/method_tracer_helpers.rb
365
+ - lib/new_relic/agent/monitors.rb
366
+ - lib/new_relic/agent/monitors/cross_app_monitor.rb
367
+ - lib/new_relic/agent/monitors/distributed_tracing_monitor.rb
368
+ - lib/new_relic/agent/monitors/inbound_request_monitor.rb
369
+ - lib/new_relic/agent/monitors/synthetics_monitor.rb
338
370
  - lib/new_relic/agent/new_relic_service.rb
339
371
  - lib/new_relic/agent/new_relic_service/encoders.rb
340
372
  - lib/new_relic/agent/new_relic_service/json_marshaller.rb
@@ -368,20 +400,17 @@ files:
368
400
  - lib/new_relic/agent/stats_engine/stats_hash.rb
369
401
  - lib/new_relic/agent/supported_versions.rb
370
402
  - lib/new_relic/agent/synthetics_event_aggregator.rb
371
- - lib/new_relic/agent/synthetics_monitor.rb
372
403
  - lib/new_relic/agent/system_info.rb
373
404
  - lib/new_relic/agent/threading/agent_thread.rb
374
405
  - lib/new_relic/agent/threading/backtrace_node.rb
375
406
  - lib/new_relic/agent/threading/backtrace_service.rb
376
407
  - lib/new_relic/agent/threading/thread_profile.rb
377
408
  - lib/new_relic/agent/timestamp_sampled_buffer.rb
378
- - lib/new_relic/agent/trace_context.rb
379
- - lib/new_relic/agent/trace_context_payload.rb
380
- - lib/new_relic/agent/trace_context_request_monitor.rb
381
409
  - lib/new_relic/agent/tracer.rb
382
410
  - lib/new_relic/agent/transaction.rb
383
411
  - lib/new_relic/agent/transaction/abstract_segment.rb
384
412
  - lib/new_relic/agent/transaction/datastore_segment.rb
413
+ - lib/new_relic/agent/transaction/distributed_tracer.rb
385
414
  - lib/new_relic/agent/transaction/distributed_tracing.rb
386
415
  - lib/new_relic/agent/transaction/external_request_segment.rb
387
416
  - lib/new_relic/agent/transaction/message_broker_segment.rb
@@ -420,6 +449,7 @@ files:
420
449
  - lib/new_relic/cli/commands/install.rb
421
450
  - lib/new_relic/coerce.rb
422
451
  - lib/new_relic/collection_helper.rb
452
+ - lib/new_relic/constants.rb
423
453
  - lib/new_relic/control.rb
424
454
  - lib/new_relic/control/class_methods.rb
425
455
  - lib/new_relic/control/frameworks.rb
@@ -494,7 +524,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
494
524
  - !ruby/object:Gem::Version
495
525
  version: 1.3.1
496
526
  requirements: []
497
- rubygems_version: 3.0.6
527
+ rubygems_version: 3.1.2
498
528
  signing_key:
499
529
  specification_version: 4
500
530
  summary: New Relic Ruby Agent