newrelic-infinite_tracing 6.15.0 → 8.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc39cecc639ecf00228523ab5a0f61c320ebf0ab656bef946e46a98a021dcad9
4
- data.tar.gz: fe96fa6bf2ad2cc53a3d6c33e37c2204b8fcb2031e3d22723736a87d35ea5b3a
3
+ metadata.gz: 445f6703f6c422340754fe7755d5fc696516b284cb8b124939d7b12df33ab41d
4
+ data.tar.gz: ca2877a86b3aa2324088040c16d0fa9ac364ca4d6c569f192560d717d6dc661e
5
5
  SHA512:
6
- metadata.gz: 38ea40bb30a9b6cf58278761c7b097234773562d373d55172be7ab70f6d5421df85b195150389975859df79e9b1c891394d06f3488bec983cb4c4f9515a98a82
7
- data.tar.gz: d48da08ed88d0442a89219eb4212e0b3b1f02904357125803addfb01ed6cf8f9c2c838ec5b99166edd2981ce75b7c5ed34bba446eccceb405cd6736dcdf18d9f
6
+ metadata.gz: 344090f0535457f3b195513bc4cdce46ca29a020e8212239ee394f28429f6d55ecb3a977d2ee6b86b06f5b74278e5c5996b71edb7159e53c10ef048646c7e59b
7
+ data.tar.gz: 7151ccfacb0587b65cde6fedb0a288b891950ad7011938e9e068ecd37dc317c3ab82685e6cd5f18496fa829d681dfcb918baacdcb889d6662574601f41ba2026
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # New Relic Infinite Tracing for Ruby Agent Release Notes #
2
2
 
3
+ ## v7.0.0
4
+ * Bugfix: Fixes an intermittent bug where the agent was unable to start when infinite tracing was enabled.
5
+
3
6
  ## v6.15.0
4
7
  * Adds data from the agents connect response `request_headers_map` to the metadata for the connection to the infinite trace observer.
5
8
 
@@ -143,6 +143,7 @@ module NewRelic::Agent
143
143
 
144
144
  def start_streaming exponential_backoff=true
145
145
  return if suspended?
146
+ Connection.instance.wait_for_agent_connect
146
147
  @lock.synchronize { @response_handler = record_spans exponential_backoff }
147
148
  end
148
149
 
@@ -81,8 +81,15 @@ module NewRelic::Agent
81
81
  # We attempt to connect and record spans with reconnection backoff in order to deal with
82
82
  # unavailable errors coming from the stub being created and record_span call
83
83
  def rpc
84
+ wait_for_agent_connect
84
85
  @rpc ||= Channel.new.stub
85
86
  end
87
+
88
+ def wait_for_agent_connect
89
+ @lock.synchronize do
90
+ @agent_started.wait(@lock) if !@agent_connected
91
+ end
92
+ end
86
93
 
87
94
  # The metadata for the RPC calls is a blocking call waiting for the Agent to
88
95
  # connect and receive the server side configuration, which contains the license_key
@@ -91,7 +98,6 @@ module NewRelic::Agent
91
98
  return @metadata if @metadata
92
99
 
93
100
  @lock.synchronize do
94
- @agent_started.wait(@lock) if !@agent_connected
95
101
 
96
102
  @metadata = {
97
103
  "license_key" => license_key,
@@ -15,11 +15,11 @@ module NewRelic::Agent
15
15
  include Enumerable
16
16
  extend Forwardable
17
17
  def_delegators :@queue, :empty?, :num_waiting, :push
18
-
18
+
19
19
  DEFAULT_QUEUE_SIZE = 10_000
20
20
  FLUSH_DELAY = 0.005
21
21
  MAX_FLUSH_WAIT = 3 # three seconds
22
-
22
+
23
23
  attr_reader :queue
24
24
 
25
25
  def initialize max_size = DEFAULT_QUEUE_SIZE
@@ -29,7 +29,7 @@ module NewRelic::Agent
29
29
  @batch = Array.new
30
30
  end
31
31
 
32
- # Dumps the contents of this streaming buffer onto
32
+ # Dumps the contents of this streaming buffer onto
33
33
  # the given buffer and closes the queue
34
34
  def transfer new_buffer
35
35
  @lock.synchronize do
@@ -67,7 +67,7 @@ module NewRelic::Agent
67
67
  @queue.num_waiting.times { @queue.push nil }
68
68
  close_queue
69
69
 
70
- # Logs if we're throwing away spans because nothing's
70
+ # Logs if we're throwing away spans because nothing's
71
71
  # waiting to take them off the queue.
72
72
  if @queue.num_waiting == 0 && !@queue.empty?
73
73
  NewRelic::Agent.logger.warn "Discarding #{@queue.size} segments on Streaming Buffer"
@@ -75,8 +75,8 @@ module NewRelic::Agent
75
75
  end
76
76
 
77
77
  # Only wait a short while for queue to flush
78
- cutoff = Time.now + MAX_FLUSH_WAIT
79
- until @queue.empty? || Time.now >= cutoff do sleep(FLUSH_DELAY) end
78
+ cutoff = Process.clock_gettime(Process::CLOCK_MONOTONIC) + MAX_FLUSH_WAIT
79
+ until @queue.empty? || Process.clock_gettime(Process::CLOCK_MONOTONIC) >= cutoff do sleep(FLUSH_DELAY) end
80
80
  end
81
81
 
82
82
  def close_queue
@@ -87,9 +87,9 @@ module NewRelic::Agent
87
87
  # items off the queue while any items are present
88
88
  # If +nil+ is popped, the queue is closing.
89
89
  #
90
- # The segment is transformed into a serializable
90
+ # The segment is transformed into a serializable
91
91
  # span here so processing is taking place within
92
- # the gRPC call's thread rather than in the main
92
+ # the gRPC call's thread rather than in the main
93
93
  # application thread.
94
94
  def enumerator
95
95
  return enum_for(:enumerator) unless block_given?
@@ -106,16 +106,16 @@ module NewRelic::Agent
106
106
 
107
107
  # Returns the blocking enumerator that will pop
108
108
  # items off the queue while any items are present
109
- #
110
- # yielding is deferred until batch_size spans is
109
+ #
110
+ # yielding is deferred until batch_size spans is
111
111
  # reached.
112
112
  #
113
- # If +nil+ is popped, the queue is closing. A
113
+ # If +nil+ is popped, the queue is closing. A
114
114
  # final yield on non-empty batch is fired.
115
115
  #
116
- # The segment is transformed into a serializable
116
+ # The segment is transformed into a serializable
117
117
  # span here so processing is taking place within
118
- # the gRPC call's thread rather than in the main
118
+ # the gRPC call's thread rather than in the main
119
119
  # application thread.
120
120
  def batch_enumerator
121
121
  return enum_for(:enumerator) unless block_given?
@@ -139,7 +139,7 @@ module NewRelic::Agent
139
139
 
140
140
  def span_event proc_or_segment
141
141
  if proc_or_segment.is_a?(Proc)
142
- proc_or_segment.call
142
+ proc_or_segment.call
143
143
  else
144
144
  SpanEventPrimitive.for_segment(proc_or_segment)
145
145
  end
@@ -32,9 +32,9 @@ Gem::Specification.new do |s|
32
32
 
33
33
  s.name = "newrelic-infinite_tracing"
34
34
  s.version = NewRelic::VERSION::STRING
35
- s.required_ruby_version = '>= 2.3.0'
35
+ s.required_ruby_version = '>= 2.5.0'
36
36
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
37
- s.authors = [ "Rachel Klein", "Tanna McClure", "Michael Lang" ]
37
+ s.authors = [ "Aaron Huntsman", "Tanna McClure", "Kayla Reopelle" ]
38
38
  s.date = Time.now.strftime('%Y-%m-%d')
39
39
  s.licenses = ['Apache-2.0']
40
40
  s.description = <<-EOS
data/tasks/all.rb CHANGED
@@ -2,7 +2,7 @@
2
2
  # This file is distributed under New Relic's license terms.
3
3
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
4
 
5
- # This is required to load in task definitions from merb
5
+ # This is required to load in task definitions
6
6
  Dir.glob(File.join(File.dirname(__FILE__),'*.rake')) do |file|
7
7
  load file
8
8
  end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: newrelic-infinite_tracing
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.15.0
4
+ version: 8.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - Rachel Klein
7
+ - Aaron Huntsman
8
8
  - Tanna McClure
9
- - Michael Lang
9
+ - Kayla Reopelle
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-01-19 00:00:00.000000000 Z
13
+ date: 2021-09-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: newrelic_rpm
@@ -18,14 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 6.15.0
21
+ version: 8.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - '='
27
27
  - !ruby/object:Gem::Version
28
- version: 6.15.0
28
+ version: 8.0.0
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: grpc
31
31
  requirement: !ruby/object:Gem::Requirement
@@ -277,14 +277,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
277
277
  requirements:
278
278
  - - ">="
279
279
  - !ruby/object:Gem::Version
280
- version: 2.3.0
280
+ version: 2.5.0
281
281
  required_rubygems_version: !ruby/object:Gem::Requirement
282
282
  requirements:
283
283
  - - ">"
284
284
  - !ruby/object:Gem::Version
285
285
  version: 1.3.1
286
286
  requirements: []
287
- rubygems_version: 3.1.4
287
+ rubygems_version: 3.1.6
288
288
  signing_key:
289
289
  specification_version: 4
290
290
  summary: New Relic Infinite Tracing for the Ruby agent