newrelic-infinite_tracing 6.11.0.365

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.
@@ -0,0 +1,39 @@
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
+ # The SuspendedStreamingBuffer class discards pushed segments and records
7
+ # the seen metric. This buffer is installed when the gRPC server returns
8
+ # UNIMPLEMENTED (status 12) code as a signal to not reconnect to the server.
9
+ module NewRelic::Agent
10
+ module InfiniteTracing
11
+ class SuspendedStreamingBuffer
12
+ include Constants
13
+ extend Forwardable
14
+ def_delegators :@empty_buffer, :empty?, :push
15
+
16
+ def initialize max_size = DEFAULT_QUEUE_SIZE
17
+ @empty_buffer = NewRelic::EMPTY_ARRAY
18
+ end
19
+
20
+ # updates the seen metric and discards the segment
21
+ def << segment
22
+ NewRelic::Agent.increment_metric SPANS_SEEN_METRIC
23
+ end
24
+
25
+ def transfer new_buffer
26
+ # NOOP
27
+ end
28
+
29
+ def close_queue
30
+ # NOOP
31
+ end
32
+ alias :flush_queue :close_queue
33
+
34
+ def enumerator
35
+ @empty_buffer
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,54 @@
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::Agent
7
+ module InfiniteTracing
8
+ module Transformer
9
+ extend self
10
+
11
+ def transform span_event
12
+ intrinsics, user_attributes, agent_attributes = span_event
13
+ {
14
+ "trace_id" => intrinsics[NewRelic::Agent::SpanEventPrimitive::TRACE_ID_KEY],
15
+ "intrinsics" => hash_to_attributes(intrinsics),
16
+ "user_attributes" => hash_to_attributes(user_attributes),
17
+ "agent_attributes" => hash_to_attributes(agent_attributes)
18
+ }
19
+ end
20
+
21
+ private
22
+
23
+ KLASS_TO_ARG = {
24
+ String => :string_value,
25
+ TrueClass => :bool_value,
26
+ FalseClass => :bool_value,
27
+ Integer => :int_value,
28
+ Float => :double_value,
29
+ }
30
+ if RUBY_VERSION < '2.4.0'
31
+ KLASS_TO_ARG[Fixnum] = :int_value
32
+ end
33
+ if defined? BigDecimal
34
+ KLASS_TO_ARG[BigDecimal] = :double_value
35
+ end
36
+
37
+ def safe_param_name value
38
+ KLASS_TO_ARG[value.class] || raise("Unhandled class #{value.class.name}")
39
+ end
40
+
41
+ def hash_to_attributes values
42
+ values.map do |key, value|
43
+ begin
44
+ [key, AttributeValue.new(safe_param_name(value) => value)]
45
+ rescue => e
46
+ puts e.inspect
47
+ puts [key, value].inspect
48
+ nil
49
+ end
50
+ end.to_h
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,12 @@
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
+ module Agent
8
+ module InfiniteTracing
9
+ VERSION = NewRelic::VERSION
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,74 @@
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
+ # The Worker class makes it easy to stop and start a thread at will.
7
+ # Some basic error handling/capture is wrapped around the Thread to help
8
+ # propagate the exceptions arising from the threaded processes to the main process
9
+ # where the main agent code lives.
10
+ module NewRelic::Agent
11
+ module InfiniteTracing
12
+
13
+ class Worker
14
+ attr_reader :name, :error
15
+
16
+ def initialize name, &job
17
+ @name = name
18
+ @job = job
19
+ @error = nil
20
+ @worker_thread = nil
21
+ @lock = Mutex.new
22
+ @lock.synchronize { start_thread }
23
+ end
24
+
25
+ def status
26
+ return "error" if error?
27
+ @lock.synchronize do
28
+ return "stopped" if @worker_thread.nil?
29
+ @worker_thread.status || "idle"
30
+ end
31
+ end
32
+
33
+ def error?
34
+ !!@error
35
+ end
36
+
37
+ def join timeout=nil
38
+ return unless @worker_thread
39
+ NewRelic::Agent.logger.debug "joining worker #{@name} thread..."
40
+ @worker_thread.join timeout
41
+ end
42
+
43
+ def stop
44
+ @lock.synchronize do
45
+ return unless @worker_thread
46
+ NewRelic::Agent.logger.debug "stopping worker #{@name} thread..."
47
+ @worker_thread.kill
48
+ @worker_thread = nil
49
+ end
50
+ end
51
+
52
+ private
53
+
54
+ def start_thread
55
+ NewRelic::Agent.logger.debug "starting worker #{@name} thread..."
56
+ @worker_thread = Thread.new do
57
+ catch(:exit) do
58
+ begin
59
+ @job.call
60
+ rescue => err
61
+ @error = err
62
+ raise
63
+ end
64
+ end
65
+ end
66
+ @worker_thread.abort_on_exception = true
67
+ if @worker_thread.respond_to? :report_on_exception
68
+ @worker_thread.report_on_exception = NewRelic::Agent.config[:log_level] == "debug"
69
+ end
70
+ end
71
+ end
72
+
73
+ end
74
+ end
@@ -0,0 +1,40 @@
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
+ require 'uri'
7
+
8
+ require 'newrelic_rpm'
9
+
10
+ NewRelic::Agent.logger.debug "Detected New Relic Infinite Tracing Gem"
11
+
12
+ require 'new_relic/infinite_tracing/version'
13
+ require 'new_relic/infinite_tracing/config'
14
+
15
+ DependencyDetection.defer do
16
+ named :infinite_tracing
17
+
18
+ depends_on do
19
+ NewRelic::Agent::InfiniteTracing::Config.should_load?
20
+ end
21
+
22
+ executes do
23
+ NewRelic::Agent.logger.debug "Loading New Relic Infinite Tracing Library"
24
+
25
+ require 'new_relic/infinite_tracing/proto'
26
+
27
+ require 'new_relic/infinite_tracing/constants'
28
+ require 'new_relic/infinite_tracing/worker'
29
+ require 'new_relic/infinite_tracing/record_status_handler'
30
+
31
+ require 'new_relic/infinite_tracing/transformer'
32
+ require 'new_relic/infinite_tracing/streaming_buffer'
33
+ require 'new_relic/infinite_tracing/suspended_streaming_buffer'
34
+ require 'new_relic/infinite_tracing/channel'
35
+ require 'new_relic/infinite_tracing/connection'
36
+ require 'new_relic/infinite_tracing/client'
37
+
38
+ require 'new_relic/infinite_tracing/agent_integrations'
39
+ end
40
+ end
@@ -0,0 +1,8 @@
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
+ unless defined? NewRelic::Agent::InfiniteTracing
7
+ require_relative '../infinite_tracing'
8
+ end
@@ -0,0 +1,42 @@
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
+
5
+ syntax = "proto3";
6
+
7
+ package com.newrelic.trace.v1;
8
+
9
+ service IngestService {
10
+ // Accepts a stream of Span messages, and returns an irregular stream of
11
+ // RecordStatus messages.
12
+ rpc RecordSpan(stream Span) returns (stream RecordStatus) {}
13
+
14
+ // Accepts a stream of SpanBatch messages, and returns an irregular
15
+ // stream of RecordStatus messages. This endpoint can be used to improve
16
+ // throughput when Span messages are small
17
+ rpc RecordSpanBatch(stream SpanBatch) returns (stream RecordStatus) {}
18
+ }
19
+
20
+ message SpanBatch {
21
+ repeated Span spans = 1;
22
+ }
23
+
24
+ message Span {
25
+ string trace_id = 1;
26
+ map<string, AttributeValue> intrinsics = 2;
27
+ map<string, AttributeValue> user_attributes = 3;
28
+ map<string, AttributeValue> agent_attributes = 4;
29
+ }
30
+
31
+ message AttributeValue {
32
+ oneof value {
33
+ string string_value = 1;
34
+ bool bool_value = 2;
35
+ int64 int_value = 3;
36
+ double double_value = 4;
37
+ }
38
+ }
39
+
40
+ message RecordStatus {
41
+ uint64 messages_seen = 1;
42
+ }
@@ -0,0 +1,91 @@
1
+ #-*- coding: utf-8 -*-
2
+ # frozen_string_literal: true
3
+
4
+ agent_lib = File.expand_path('../../lib', __FILE__)
5
+ $LOAD_PATH.unshift(agent_lib) unless $LOAD_PATH.include?(agent_lib)
6
+
7
+ lib = File.expand_path('../lib', __FILE__)
8
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
9
+
10
+ require 'new_relic/version'
11
+
12
+ Gem::Specification.new do |s|
13
+
14
+ def self.copy_files filelist
15
+ subfolder = File.expand_path File.dirname(__FILE__)
16
+
17
+ filelist.each do |filename|
18
+ source_full_filename = File.expand_path(filename)
19
+ dest_full_filename = File.join(subfolder, File.basename(filename))
20
+ FileUtils.cp source_full_filename, dest_full_filename
21
+ end
22
+ end
23
+
24
+ shared_files = [
25
+ "../LICENSE",
26
+ "../CONTRIBUTING.md",
27
+ ]
28
+
29
+ self.copy_files shared_files
30
+
31
+ s.name = "newrelic-infinite_tracing"
32
+ s.version = NewRelic::VERSION::STRING
33
+ s.required_ruby_version = '>= 2.3.0'
34
+ s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
35
+ s.authors = [ "Rachel Klein", "Tanna McClure", "Michael Lang" ]
36
+ s.date = Time.now.strftime('%Y-%m-%d')
37
+ s.licenses = ['New Relic']
38
+ s.description = <<-EOS
39
+ The New Relic Ruby agent requires the gem newrelic_rpm, and it includes distributed
40
+ tracing that uses head-based sampling (standard distributed tracing).
41
+
42
+ If you want distributed tracing to use tail-based sampling (Infinite Tracing),
43
+ you need to add both newrelic_rpm and newrelic-infinite_tracing to your application's
44
+ Gemfile. For more information, see: https://docs.newrelic.com/docs/understand-dependencies/distributed-tracing/get-started/introduction-distributed-tracing
45
+
46
+ New Relic is a performance management system, developed by New Relic,
47
+ Inc (http://www.newrelic.com). New Relic provides you with deep
48
+ information about the performance of your web application as it runs
49
+ in production. The New Relic Ruby Agent is dual-purposed as a either a
50
+ Gem or plugin, hosted on https://github.com/newrelic/rpm/
51
+ EOS
52
+
53
+ s.email = "support@newrelic.com"
54
+ s.executables = []
55
+ s.extra_rdoc_files = [
56
+ "CHANGELOG.md",
57
+ "LICENSE"
58
+ ]
59
+
60
+ s.metadata = {
61
+ 'bug_tracker_uri' => 'https://support.newrelic.com/',
62
+ 'changelog_uri' => 'https://github.com/newrelic/rpm/blob/master/infinite_tracing/CHANGELOG.md',
63
+ 'documentation_uri' => 'https://docs.newrelic.com/docs/agents/ruby-agent',
64
+ 'source_code_uri' => 'https://github.com/newrelic/rpm'
65
+ }
66
+
67
+ file_list = `git ls-files . -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/(?!agent_helper.rb)}) }
68
+ s.files = file_list
69
+
70
+ s.homepage = "https://github.com/newrelic/rpm/tree/master/infinite_tracing"
71
+ s.require_paths = ["lib", "infinite_tracing"]
72
+ s.rubygems_version = Gem::VERSION
73
+ s.summary = "New Relic Infinite Tracing for the Ruby agent"
74
+
75
+ s.add_dependency 'newrelic_rpm', NewRelic::VERSION::STRING
76
+ s.add_dependency 'grpc', '~> 1.28.0'
77
+
78
+ s.add_development_dependency 'rake', '12.3.3'
79
+ s.add_development_dependency 'rb-inotify', '0.9.10' # locked to support < Ruby 2.3 (and listen 3.0.8)
80
+ s.add_development_dependency 'listen', '3.0.8' # locked to support < Ruby 2.3
81
+ s.add_development_dependency 'minitest', '~> 5.14.0'
82
+ s.add_development_dependency 'mocha', '~> 1.9.0'
83
+ s.add_development_dependency 'pry-nav', '~> 0.3.0'
84
+ s.add_development_dependency 'pry-stack_explorer', '~> 0.4.9'
85
+ s.add_development_dependency 'guard', '~> 2.16.0'
86
+ s.add_development_dependency 'guard-minitest', '~> 2.4.0'
87
+ s.add_development_dependency 'hometown', '~> 0.2.5'
88
+ s.add_development_dependency 'bundler'
89
+
90
+ s.add_development_dependency 'grpc-tools', "~> 1.14.0"
91
+ end
@@ -0,0 +1,8 @@
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
+
5
+ # This is required to load in task definitions from merb
6
+ Dir.glob(File.join(File.dirname(__FILE__),'*.rake')) do |file|
7
+ load file
8
+ end
@@ -0,0 +1,51 @@
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
+
5
+ namespace :proto do
6
+ desc "Generate proto files"
7
+
8
+ task :generate do
9
+ def extract_license_terms file_contents
10
+ text = []
11
+ text << file_contents.shift while !file_contents.empty? && file_contents[0] =~ /^#/
12
+ text << ""
13
+ text
14
+ end
15
+
16
+ # adds the NewRelic License notice to the top of the generated files
17
+ # Removes require lines since these are replicated in the proto.rb file.
18
+ def add_license_preamble_and_remove_requires output_path
19
+ gemspec_path = File.expand_path(File.join(output_path, '..', '..', '..', '..', '..'))
20
+ license_terms = extract_license_terms File.readlines(File.join(gemspec_path, "Gemfile"))
21
+ Dir.glob(File.join output_path, "*.rb") do |filename|
22
+ contents = File.readlines filename
23
+ contents.reject!{|r| r =~ /^\s*require\s.*$/}
24
+ File.open(filename, 'w') do |output|
25
+ output.puts license_terms
26
+ output.puts contents
27
+ end
28
+ end
29
+ end
30
+
31
+ gem_folder = File.expand_path File.join(File.dirname(__FILE__), "..")
32
+ proto_filename = File.join gem_folder, "lib", "new_relic", "proto", "infinite_tracing.proto"
33
+ output_path = File.join gem_folder, "lib", "new_relic", "infinite_tracing", "proto"
34
+
35
+ FileUtils.mkdir_p output_path
36
+ cmd = [
37
+ "grpc_tools_ruby_protoc",
38
+ "-I#{gem_folder}/lib/new_relic/proto",
39
+ "--ruby_out=#{output_path}",
40
+ "--grpc_out=#{output_path} #{proto_filename}"
41
+ ].join(" ")
42
+
43
+ if system cmd
44
+ puts "Proto file generated!"
45
+ add_license_preamble_and_remove_requires output_path
46
+ else
47
+ puts "Failed to generate proto file."
48
+ end
49
+ end
50
+
51
+ end
metadata ADDED
@@ -0,0 +1,290 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: newrelic-infinite_tracing
3
+ version: !ruby/object:Gem::Version
4
+ version: 6.11.0.365
5
+ platform: ruby
6
+ authors:
7
+ - Rachel Klein
8
+ - Tanna McClure
9
+ - Michael Lang
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2020-05-28 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: newrelic_rpm
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - '='
20
+ - !ruby/object:Gem::Version
21
+ version: 6.11.0.365
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - '='
27
+ - !ruby/object:Gem::Version
28
+ version: 6.11.0.365
29
+ - !ruby/object:Gem::Dependency
30
+ name: grpc
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: 1.28.0
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: 1.28.0
43
+ - !ruby/object:Gem::Dependency
44
+ name: rake
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - '='
48
+ - !ruby/object:Gem::Version
49
+ version: 12.3.3
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - '='
55
+ - !ruby/object:Gem::Version
56
+ version: 12.3.3
57
+ - !ruby/object:Gem::Dependency
58
+ name: rb-inotify
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - '='
62
+ - !ruby/object:Gem::Version
63
+ version: 0.9.10
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - '='
69
+ - !ruby/object:Gem::Version
70
+ version: 0.9.10
71
+ - !ruby/object:Gem::Dependency
72
+ name: listen
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - '='
76
+ - !ruby/object:Gem::Version
77
+ version: 3.0.8
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - '='
83
+ - !ruby/object:Gem::Version
84
+ version: 3.0.8
85
+ - !ruby/object:Gem::Dependency
86
+ name: minitest
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: 5.14.0
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: 5.14.0
99
+ - !ruby/object:Gem::Dependency
100
+ name: mocha
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: 1.9.0
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: 1.9.0
113
+ - !ruby/object:Gem::Dependency
114
+ name: pry-nav
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: 0.3.0
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - "~>"
125
+ - !ruby/object:Gem::Version
126
+ version: 0.3.0
127
+ - !ruby/object:Gem::Dependency
128
+ name: pry-stack_explorer
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: 0.4.9
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - "~>"
139
+ - !ruby/object:Gem::Version
140
+ version: 0.4.9
141
+ - !ruby/object:Gem::Dependency
142
+ name: guard
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - "~>"
146
+ - !ruby/object:Gem::Version
147
+ version: 2.16.0
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - "~>"
153
+ - !ruby/object:Gem::Version
154
+ version: 2.16.0
155
+ - !ruby/object:Gem::Dependency
156
+ name: guard-minitest
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - "~>"
160
+ - !ruby/object:Gem::Version
161
+ version: 2.4.0
162
+ type: :development
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - "~>"
167
+ - !ruby/object:Gem::Version
168
+ version: 2.4.0
169
+ - !ruby/object:Gem::Dependency
170
+ name: hometown
171
+ requirement: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - "~>"
174
+ - !ruby/object:Gem::Version
175
+ version: 0.2.5
176
+ type: :development
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - "~>"
181
+ - !ruby/object:Gem::Version
182
+ version: 0.2.5
183
+ - !ruby/object:Gem::Dependency
184
+ name: bundler
185
+ requirement: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - ">="
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ type: :development
191
+ prerelease: false
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
197
+ - !ruby/object:Gem::Dependency
198
+ name: grpc-tools
199
+ requirement: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - "~>"
202
+ - !ruby/object:Gem::Version
203
+ version: 1.14.0
204
+ type: :development
205
+ prerelease: false
206
+ version_requirements: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - "~>"
209
+ - !ruby/object:Gem::Version
210
+ version: 1.14.0
211
+ description: |
212
+ The New Relic Ruby agent requires the gem newrelic_rpm, and it includes distributed
213
+ tracing that uses head-based sampling (standard distributed tracing).
214
+
215
+ If you want distributed tracing to use tail-based sampling (Infinite Tracing),
216
+ you need to add both newrelic_rpm and newrelic-infinite_tracing to your application's
217
+ Gemfile. For more information, see: https://docs.newrelic.com/docs/understand-dependencies/distributed-tracing/get-started/introduction-distributed-tracing
218
+
219
+ New Relic is a performance management system, developed by New Relic,
220
+ Inc (http://www.newrelic.com). New Relic provides you with deep
221
+ information about the performance of your web application as it runs
222
+ in production. The New Relic Ruby Agent is dual-purposed as a either a
223
+ Gem or plugin, hosted on https://github.com/newrelic/rpm/
224
+ email: support@newrelic.com
225
+ executables: []
226
+ extensions: []
227
+ extra_rdoc_files:
228
+ - CHANGELOG.md
229
+ - LICENSE
230
+ files:
231
+ - ".gitignore"
232
+ - CHANGELOG.md
233
+ - Gemfile
234
+ - LICENSE
235
+ - Rakefile
236
+ - lib/infinite_tracing.rb
237
+ - lib/infinite_tracing/agent_integrations.rb
238
+ - lib/infinite_tracing/agent_integrations/agent.rb
239
+ - lib/infinite_tracing/agent_integrations/datastore_segment.rb
240
+ - lib/infinite_tracing/agent_integrations/external_request_segment.rb
241
+ - lib/infinite_tracing/agent_integrations/segment.rb
242
+ - lib/infinite_tracing/channel.rb
243
+ - lib/infinite_tracing/client.rb
244
+ - lib/infinite_tracing/config.rb
245
+ - lib/infinite_tracing/connection.rb
246
+ - lib/infinite_tracing/constants.rb
247
+ - lib/infinite_tracing/proto.rb
248
+ - lib/infinite_tracing/proto/infinite_tracing_pb.rb
249
+ - lib/infinite_tracing/proto/infinite_tracing_services_pb.rb
250
+ - lib/infinite_tracing/record_status_handler.rb
251
+ - lib/infinite_tracing/streaming_buffer.rb
252
+ - lib/infinite_tracing/suspended_streaming_buffer.rb
253
+ - lib/infinite_tracing/transformer.rb
254
+ - lib/infinite_tracing/version.rb
255
+ - lib/infinite_tracing/worker.rb
256
+ - lib/new_relic/infinite_tracing.rb
257
+ - lib/newrelic/infinite_tracing.rb
258
+ - lib/proto/infinite_tracing.proto
259
+ - newrelic-infinite_tracing.gemspec
260
+ - tasks/all.rb
261
+ - tasks/proto.rake
262
+ homepage: https://github.com/newrelic/rpm/tree/master/infinite_tracing
263
+ licenses:
264
+ - New Relic
265
+ metadata:
266
+ bug_tracker_uri: https://support.newrelic.com/
267
+ changelog_uri: https://github.com/newrelic/rpm/blob/master/infinite_tracing/CHANGELOG.md
268
+ documentation_uri: https://docs.newrelic.com/docs/agents/ruby-agent
269
+ source_code_uri: https://github.com/newrelic/rpm
270
+ post_install_message:
271
+ rdoc_options: []
272
+ require_paths:
273
+ - lib
274
+ - infinite_tracing
275
+ required_ruby_version: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - ">="
278
+ - !ruby/object:Gem::Version
279
+ version: 2.3.0
280
+ required_rubygems_version: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - ">"
283
+ - !ruby/object:Gem::Version
284
+ version: 1.3.1
285
+ requirements: []
286
+ rubygems_version: 3.0.6
287
+ signing_key:
288
+ specification_version: 4
289
+ summary: New Relic Infinite Tracing for the Ruby agent
290
+ test_files: []