stackify-ruby-apm 1.14.6 → 1.14.7

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: 207d50046b455753b802c84ef15314d336df3376b986e98f8fff5014aeed6370
4
- data.tar.gz: bfc2a15d2d26c9aea7263945b6a0f10c02da58f6c1ed0dfb6ea13fc2adcd6c38
3
+ metadata.gz: 881446a181c81d422cdd81f2de4b4ccef409989171d96a53833bbe425f8105c0
4
+ data.tar.gz: ed31e237779e881ab4a57d7db2c4dcc7936bbe01b6af256ac4f53d9ae4c96054
5
5
  SHA512:
6
- metadata.gz: bc2621fd6efa921753d1db81649e7cbff2f26b35350798c82a01a2326752ba2db8e42ccd5de1730a69a9516a849b48943415b9160ffeaa0b70b5baea54f3cb9e
7
- data.tar.gz: 7f6b9b487101dad81b0b29acfe7c1844d29a778ff48235a9180160c2724dd78a57a8d6eee515169a01e4e36f92156ee9f590aa2a88de4043f1c47de64666d061
6
+ metadata.gz: 293677dce94cf22be5e9a45fb1e7d9b7090fcbbe76a4a1bb679da719896d3ced92c5e34bc6ef0315ef8c05c3ee8621bcd51bac552e6f02bfce635aa13205f23e
7
+ data.tar.gz: 581165dd6ee9b10a02d206a7f985b6980ee1ddb46a9a2de05e194a6a9578596114823eff12cd4dab96277e82e533bb9c742c0ee72e109de2a8e819405fb5f4ce
@@ -19,6 +19,8 @@ module DatabaseHelper
19
19
  'db2'
20
20
  elsif driver.include? 'sqlite'
21
21
  'sqlite'
22
+ else
23
+ 'generic'
22
24
  end
23
25
  end
24
26
  # rubocop:enable Metrics/CyclomaticComplexity
@@ -14,7 +14,6 @@ module StackifyRubyAPM
14
14
 
15
15
  def initialize(*args)
16
16
  super(*args)
17
- @type = nil
18
17
  end
19
18
 
20
19
  def normalize(_transaction, _name, payload)
@@ -25,11 +24,8 @@ module StackifyRubyAPM
25
24
  name = payload[:sql] || payload[:name] || 'Default'
26
25
  context = Span::Context.new(statement)
27
26
 
28
- if (@type == nil)
29
- @type = format('db.%s.sql', lookup_adapter || 'unknown').freeze
30
- end
31
-
32
- [name, @type, context]
27
+ type = format('db.%s.sql', lookup_adapter(payload) || 'unknown').freeze
28
+ [name, type, context]
33
29
  end
34
30
 
35
31
  private
@@ -37,7 +33,7 @@ module StackifyRubyAPM
37
33
  def query_variables(payload)
38
34
  adapter_config = lookup_adapter_config
39
35
  props = get_common_db_properties
40
- props[:PROVIDER] = get_profiler(lookup_adapter)
36
+ props[:PROVIDER] = get_profiler(lookup_adapter(payload))
41
37
  props[:SQL] = payload[:sql]
42
38
  if adapter_config
43
39
  props[:URL] = "#{adapter_config[:host]}:#{adapter_config[:port]}"
@@ -60,8 +56,37 @@ module StackifyRubyAPM
60
56
  # Retrieve Connection: lib/active_record/connection_handling.rb#L309
61
57
  # Handler Retrieve Connection: lib/active_record/connection_adapters/abstract/connection_pool.rb#L1111
62
58
 
63
- def lookup_adapter
64
- ::ActiveRecord::Base.connection.adapter_name.downcase
59
+ def lookup_adapter(payload)
60
+ connection = nil
61
+ if (payload.key?(:connection))
62
+ connection = payload[:connection]
63
+ elsif ::ActiveRecord::Base.connection_pool.instance_variable_defined?(:@reserved_connections) and payload.key?(:connection_id)
64
+ connection_id = payload[:connection_id] # Connection ID here is the object_id of the connection object
65
+ connections = ::ActiveRecord::Base.connection_pool.instance_variable_get(:@reserved_connections) # Lets check the reserved connections
66
+
67
+ if (
68
+ (connections.class != nil and connections.respond_to?(:class) and
69
+ (connections.class.to_s == 'ThreadSafe::Cache' or connections.class.to_s == 'Hash')
70
+ ) and connections.size()
71
+ )
72
+ connections.each_value do |val|
73
+ if val.object_id == connection_id
74
+ connection = val
75
+ break
76
+ end
77
+ end
78
+ end
79
+ end
80
+
81
+ if (connection.nil?)
82
+ return 'generic'
83
+ end
84
+
85
+ if (connection.respond_to?(:adapter_name) && connection.adapter_name.nil?)
86
+ return 'generic'
87
+ end
88
+
89
+ connection.adapter_name.downcase
65
90
  rescue StandardError => error
66
91
  debug '[SqlNormalizer] lookup_adapter err: ' + error.inspect.to_s
67
92
  nil
@@ -80,7 +105,7 @@ module StackifyRubyAPM
80
105
 
81
106
  def check_prepared_stmt(statement, payload)
82
107
  if StackifyRubyAPM.agent.config.prefix_enabled
83
- case get_profiler(lookup_adapter)
108
+ case get_profiler(lookup_adapter(payload))
84
109
  when 'generic', 'mysql', 'sqlite', 'oracle', 'db2'
85
110
  check_prepared_stmt_by_placeholder(payload[:sql].include?('?'), statement, payload)
86
111
  when 'postgresql'
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Sets the version of the APM
4
4
  module StackifyRubyAPM
5
- VERSION = '1.14.6'.freeze
5
+ VERSION = '1.14.7'.freeze
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stackify-ruby-apm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.14.6
4
+ version: 1.14.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stackify
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-02-04 00:00:00.000000000 Z
11
+ date: 2021-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails