raygun-apm 1.1.7-x86_64-linux → 1.1.11-x86_64-linux

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: 24a58d4b0b8f2598bd5e7e368ebea9381c5b9dcad8684d08e27bc188f05f50cc
4
- data.tar.gz: de97b27e98844846154704dd97d9314a91c8135e3e1cbc9f55ee1a0782a01465
3
+ metadata.gz: 6b23fd7aa894b164f08001babf5fa563307b57028d095a2a19628142eb92047f
4
+ data.tar.gz: 60c94fe3d377bd872311d459f098fa7d93c68bc8b970ff7cf2fd29f645727f61
5
5
  SHA512:
6
- metadata.gz: 8602c8cebd7a55af7b7ba1d5ae0894532d6a3c9695f13e134bdbab051cea3cf281090a4189a2179f5b85419a25893ddfa43d8ca466942209a8d35dc2718f448e
7
- data.tar.gz: 94ba681ee86fed8039ad5d75ace9223b724898e6d8a45dce849efc770d3733b131370ff97a1a972d92f282040d74071833833651a3bebb7416963b5879bf3377
6
+ metadata.gz: 8cb4603b99e2a5ff27edf7aec3238aad45ae4b966cbdd9ace7ff2c78c36794860df332ac4ff9a921703c31edd30ae5f9a6d45ecbe56c16d7aa53846a4c13c15a
7
+ data.tar.gz: b90fd05342545c5aced0b70d3f34e0c47bc550deb255f11eca1d284c8fe01b673d974790b33ef20843a13d778ef29b5f1d80bd89fb03a98b879e5470e8a02b59
Binary file
Binary file
Binary file
Binary file
@@ -52,9 +52,9 @@ module Raygun
52
52
  end
53
53
 
54
54
  # Initial constants for ProtonAgentTail.exe
55
- UDP_SINK_HOST = TCP_MANAGEMENT_HOST = '127.0.0.1'
55
+ UDP_SINK_HOST = TCP_SINK_HOST = TCP_MANAGEMENT_HOST = '127.0.0.1'
56
56
  UDP_SINK_MULTICAST_HOST = '239.100.15.215'
57
- UDP_SINK_PORT = 2799
57
+ UDP_SINK_PORT = TCP_SINK_PORT = 2799
58
58
  TCP_MANAGEMENT_PORT = 2790
59
59
 
60
60
  ## Enumerate all PROTON_ constants
@@ -68,6 +68,11 @@ module Raygun
68
68
  ## New - Ruby profiler
69
69
  config_var 'PROTON_UDP_HOST', as: String, default: UDP_SINK_HOST
70
70
  config_var 'PROTON_UDP_PORT', as: Integer, default: UDP_SINK_PORT
71
+ config_var 'PROTON_TCP_HOST', as: String, default: TCP_SINK_HOST
72
+ config_var 'PROTON_TCP_PORT', as: Integer, default: TCP_SINK_PORT
73
+ ## Conditional hooks
74
+ config_var 'PROTON_HOOK_REDIS', as: :boolean, default: 'True'
75
+ config_var 'PROTON_HOOK_INTERNALS', as: :boolean, default: 'True'
71
76
 
72
77
  def proton_udp_host
73
78
  if proton_use_multicast == 'True'
@@ -77,6 +82,10 @@ module Raygun
77
82
  end
78
83
  end
79
84
 
85
+ def proton_tcp_host
86
+ env['PROTON_TCP_HOST'] ? env['PROTON_TCP_HOST'].to_s : TCP_SINK_HOST
87
+ end
88
+
80
89
  def loglevel
81
90
  LOGLEVELS[proton_debug_loglevel] || raise(ArgumentError, "invalid log level")
82
91
  end
@@ -33,4 +33,4 @@ module Raygun
33
33
  end
34
34
  end
35
35
 
36
- Excon::Connection.prepend(Raygun::Apm::Hooks::Excon)
36
+ Raygun::Apm::Tracer.patch(Excon::Connection, Raygun::Apm::Hooks::Excon)
@@ -40,4 +40,4 @@ module Raygun
40
40
  end
41
41
  end
42
42
 
43
- HTTPClient.prepend(Raygun::Apm::Hooks::HTTPClient)
43
+ Raygun::Apm::Tracer.patch(HTTPClient, Raygun::Apm::Hooks::HTTPClient)
@@ -88,8 +88,8 @@ module Raygun
88
88
  end
89
89
  end
90
90
 
91
- Object.prepend Raygun::Apm::Hooks::Object
92
- IO.prepend Raygun::Apm::Hooks::IO
93
- Random.prepend Raygun::Apm::Hooks::Random
94
- Signal.prepend Raygun::Apm::Hooks::Signal
95
- Thread::Mutex.prepend Raygun::Apm::Hooks::Mutex
91
+ Raygun::Apm::Tracer.patch(Object, Raygun::Apm::Hooks::Object)
92
+ Raygun::Apm::Tracer.patch(IO, Raygun::Apm::Hooks::IO)
93
+ Raygun::Apm::Tracer.patch(Random, Raygun::Apm::Hooks::Random)
94
+ Raygun::Apm::Tracer.patch(Signal, Raygun::Apm::Hooks::Signal)
95
+ Raygun::Apm::Tracer.patch(Thread::Mutex, Raygun::Apm::Hooks::Mutex)
@@ -41,5 +41,5 @@ module Raygun
41
41
  end
42
42
 
43
43
  Mongo::Operation.constants.each do |operation|
44
- Mongo::Operation.const_get(operation).prepend(Raygun::Apm::Hooks::MongoDB) rescue nil
44
+ Raygun::Apm::Tracer.patch(Mongo::Operation.const_get(operation), Raygun::Apm::Hooks::MongoDB) rescue nil
45
45
  end
@@ -41,4 +41,4 @@ module Raygun
41
41
  end
42
42
  end
43
43
 
44
- ::Net::HTTP.prepend(Raygun::Apm::Hooks::Net::HTTP)
44
+ Raygun::Apm::Tracer.patch(::Net::HTTP, Raygun::Apm::Hooks::Net::HTTP)
@@ -43,4 +43,4 @@ module Raygun
43
43
  end
44
44
  end
45
45
 
46
- ::Redis::Client.prepend(Raygun::Apm::Hooks::Redis)
46
+ Raygun::Apm::Tracer.patch(::Redis::Client, Raygun::Apm::Hooks::Redis)
@@ -4,8 +4,14 @@ require 'rbconfig'
4
4
  module Raygun
5
5
  module Apm
6
6
  class Tracer
7
+ @__mutex = Mutex.new
8
+
7
9
  @__pids ||= {}
8
10
  class << self
11
+ def synchronize(&block)
12
+ @__mutex.synchronize { block.call }
13
+ end
14
+
9
15
  def instance
10
16
  @__pids[Process.pid]
11
17
  end
@@ -13,6 +19,10 @@ module Raygun
13
19
  def instance=(tracer)
14
20
  @__pids[Process.pid] = tracer
15
21
  end
22
+
23
+ def patch(concern, hook)
24
+ concern.prepend(hook) unless concern.ancestors.include?(hook)
25
+ end
16
26
  end
17
27
 
18
28
  attr_accessor :config
@@ -22,6 +32,7 @@ module Raygun
22
32
  initialize_blacklist
23
33
  register_known_library_paths
24
34
  run_agent_connectivity_diagnostics
35
+ require_hooks
25
36
  ObjectSpace.define_finalizer(self, proc{ disable_tracepoints })
26
37
  # Any fails here is kamikaze for the tracer
27
38
  rescue => e
@@ -30,7 +41,6 @@ module Raygun
30
41
  end
31
42
 
32
43
  def udp_sink!
33
- require "socket"
34
44
  sock = UDPSocket.new
35
45
  # For UDP sockets, SO_SNDBUF is the max packet size and NOT send buffer as with a connection oriented transport
36
46
  sock.setsockopt(Socket::SOL_SOCKET, Socket::SO_SNDBUF, Tracer::BATCH_PACKET_SIZE)
@@ -40,12 +50,29 @@ module Raygun
40
50
  port: config.proton_udp_port,
41
51
  receive_buffer_size: sock.getsockopt(Socket::SOL_SOCKET, Socket::SO_RCVBUF).int
42
52
  )
43
- # Any fails here is kamikaze for the tracer
44
53
  rescue => e
45
54
  # XXX works for the middleware wrapped case, not for standalone - revisit
46
55
  raise Raygun::Apm::FatalError, "Raygun APM UDP sink could not be initialized: #{e.message} #{e.backtrace.join("\n")}"
47
56
  end
48
57
 
58
+ def tcp_sink!
59
+ self.tcp_sink(
60
+ host: config.proton_tcp_host,
61
+ port: config.proton_tcp_port
62
+ )
63
+ rescue => e
64
+ # XXX works for the middleware wrapped case, not for standalone - revisit
65
+ raise Raygun::Apm::FatalError, "Raygun APM TCP sink could not be initialized: #{e.message} #{e.backtrace.join("\n")}"
66
+ end
67
+
68
+ def enable_sink!
69
+ if config.proton_network_mode == "Udp"
70
+ udp_sink!
71
+ elsif config.proton_network_mode == "Tcp"
72
+ tcp_sink!
73
+ end
74
+ end
75
+
49
76
  private
50
77
  def configure(env)
51
78
  @config = Config.new(env)
@@ -83,6 +110,22 @@ module Raygun
83
110
  check = Raygun::Apm::Diagnostics.new
84
111
  check.verify_agent(self)
85
112
  end
113
+
114
+ def require_hooks
115
+ require "raygun/apm/hooks/internals" if @config.proton_hook_internals
116
+ require "raygun/apm/hooks/net_http"
117
+ # conditionally required - may not be bundled
118
+ conditional_hooks = %w(httpclient excon mongodb)
119
+ conditional_hooks.each do |hook|
120
+ begin
121
+ require "raygun/apm/hooks/#{hook}"
122
+ rescue LoadError
123
+ end
124
+ end
125
+ if @config.proton_hook_redis
126
+ require "raygun/apm/hooks/redis" if defined?(Redis::Client)
127
+ end
128
+ end
86
129
  end
87
130
  end
88
131
  end
@@ -1,6 +1,6 @@
1
1
  module Raygun
2
2
  module Apm
3
- VERSION = "1.1.7"
3
+ VERSION = "1.1.11"
4
4
  MINIMUM_AGENT_VERSION = "1.0.1190.0"
5
5
  end
6
6
  end
data/lib/raygun/apm.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "raygun/apm/version"
2
+ require "socket"
2
3
 
3
4
  begin
4
5
  # Attempt to load a precompiled shared object (released gem)
@@ -15,13 +16,3 @@ require "raygun/apm/blacklist/parser"
15
16
  require "raygun/apm/blacklist/translator"
16
17
  require "raygun/apm/tracer"
17
18
  require "raygun/apm/event"
18
- require "raygun/apm/hooks/internals"
19
- require "raygun/apm/hooks/net_http"
20
- # conditionally required - may not be bundled
21
- conditional_hooks = %w(httpclient excon mongodb)
22
- conditional_hooks.each do |hook|
23
- begin
24
- require "raygun/apm/hooks/#{hook}"
25
- rescue LoadError
26
- end
27
- end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: raygun-apm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.7
4
+ version: 1.1.11
5
5
  platform: x86_64-linux
6
6
  authors:
7
7
  - Raygun Limited
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-09 00:00:00.000000000 Z
11
+ date: 2022-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: debase-ruby_core_source