raygun-apm 1.1.7-x86-mingw32 → 1.1.11-x86-mingw32

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 29e8e377761e753e50347d53749248b14c4a539aa87ab7662386b4d3d7a3fcc9
4
- data.tar.gz: b4c1c81c187ee960300f4189ca87250cf436a2687898034d2cd5a0f8ea4e5efb
3
+ metadata.gz: 8c4f6c06d3371aa09803ab2d19825ae7c8b7c6de27e2279d7f26538c07cd82df
4
+ data.tar.gz: 99ef5e803e116c15eaca0e87f5e706f38cbc75a6d8a8626a05670383b6f470de
5
5
  SHA512:
6
- metadata.gz: 53ea73516911265d938061c9c8e6b727928ef6c23df7e32f28304b1bd15b7f8fb1b1d5b28d239f7c3a5b7fd5c335c4aea4769d52bbd819a476f0abb6b0674022
7
- data.tar.gz: 823f337f7f87639d07cc8b8f37e4d0bc12e858e02c76dc381e614e38377eef8116960b258e3a431644d6d75590330c80c860f898d1ad188100eb5249f642d810
6
+ metadata.gz: 36134af494891f6a92a91118a1cd07f6ccdddf022a3c912ee69e8286646f33fbf118625b712f79d99982864859c4ff019e3afc9d245a7c97540c7fd8ecf12926
7
+ data.tar.gz: 85dd97f12c9e7a8b94f8243b6fe32fa73c27fc2be4c04d81ef83e1b3eb07d092fa45aa974ed2bafa54cc0583a1d8e0f76e83b18fadad123a3cda634dbb01f064
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-mingw32
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