stackify-ruby-apm 1.17.0 → 1.17.1.beta1
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 +4 -4
- data/lib/stackify_apm/normalizers/active_record.rb +32 -39
- data/lib/stackify_apm/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cd02332c0ae91e16df090836f03bfb2ddf182b2d229c9e1235e77abdf815f900
|
4
|
+
data.tar.gz: 3dfe002446578fa63936b24a1609f0e391a8a51f1bd9f2d724b277131ee399f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 13f1475ba79faa6c7624b10cbb71514da5ca42396fb9a7a52807fef166affa411fee0379dc5319ac796aa150dd55ab4ebab41833bc14cabb2d096c920026ba13
|
7
|
+
data.tar.gz: 11ac5b25f835c629cbad2b71efdf05676a730f1be6c8ec7d9fa2d748721939edd2b506aebc8db865d43c91acfa812dd99cea712929b0cba37094310cdcccbc21
|
@@ -20,21 +20,22 @@ module StackifyRubyAPM
|
|
20
20
|
def normalize(_transaction, _name, payload)
|
21
21
|
return :skip if %w[SCHEMA CACHE].include?(payload[:name])
|
22
22
|
|
23
|
-
|
24
|
-
|
23
|
+
adapter = lookup_adapter(payload)
|
24
|
+
statement = query_variables(payload, adapter)
|
25
|
+
check_prepared_stmt(statement, payload, adapter)
|
25
26
|
name = payload[:sql] || payload[:name] || 'Default'
|
26
27
|
context = Span::Context.new(statement)
|
27
28
|
|
28
|
-
type = format('db.%s.sql',
|
29
|
+
type = format('db.%s.sql', adapter || 'unknown').freeze
|
29
30
|
[name, type, context]
|
30
31
|
end
|
31
32
|
|
32
33
|
private
|
33
34
|
|
34
|
-
def query_variables(payload)
|
35
|
+
def query_variables(payload, adapter)
|
35
36
|
adapter_config = lookup_adapter_config
|
36
37
|
props = get_common_db_properties
|
37
|
-
props[:PROVIDER] = get_profiler(
|
38
|
+
props[:PROVIDER] = get_profiler(adapter)
|
38
39
|
props[:SQL] = payload[:sql]
|
39
40
|
if adapter_config
|
40
41
|
props[:URL] = "#{adapter_config[:host]}:#{adapter_config[:port]}"
|
@@ -58,52 +59,44 @@ module StackifyRubyAPM
|
|
58
59
|
# Handler Retrieve Connection: lib/active_record/connection_adapters/abstract/connection_pool.rb#L1111
|
59
60
|
|
60
61
|
def lookup_adapter(payload)
|
61
|
-
connection
|
62
|
+
# If connection is explicitly set
|
62
63
|
if (payload.key?(:connection))
|
63
64
|
connection = payload[:connection]
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
connections.
|
74
|
-
if
|
75
|
-
connection =
|
65
|
+
if (connection.respond_to?(:adapter_name) && !connection.adapter_name.nil?)
|
66
|
+
return connection.adapter_name.downcase
|
67
|
+
end
|
68
|
+
elsif ::ActiveRecord::Base.respond_to?(:connection_handler) && ::ActiveRecord::Base.connection_handler.connection_pool_list.size() > 0 && payload.key?(:connection_id)
|
69
|
+
connection_id = payload[:connection_id]
|
70
|
+
connection = nil
|
71
|
+
connection_pool = nil
|
72
|
+
connection_pool_list = ::ActiveRecord::Base.connection_handler.connection_pool_list
|
73
|
+
connection_pool_list.each do |pool|
|
74
|
+
pool.instance_variable_get(:@connections).each do |conn|
|
75
|
+
if conn.object_id == connection_id
|
76
|
+
connection = conn
|
76
77
|
break
|
77
78
|
end
|
78
79
|
end
|
79
80
|
end
|
80
|
-
end
|
81
81
|
|
82
|
-
|
83
|
-
|
84
|
-
return ::ActiveRecord::Base.connection.adapter_name.downcase
|
85
|
-
else
|
86
|
-
return 'generic'
|
82
|
+
if (!connection.nil? && connection.respond_to?(:adapter_name))
|
83
|
+
return connection.adapter_name.downcase
|
87
84
|
end
|
88
85
|
end
|
89
|
-
|
90
|
-
|
91
|
-
if
|
92
|
-
return
|
93
|
-
|
94
|
-
|
86
|
+
if (::ActiveRecord::Base.respond_to?(:connection_pool) && ::ActiveRecord::Base.connection_pool)
|
87
|
+
base_connection_pool = ::ActiveRecord::Base.connection_pool
|
88
|
+
if (base_connection_pool.respond_to?(:config))
|
89
|
+
return base_connection_pool.config[:adapter]
|
90
|
+
end
|
91
|
+
if (base_connection_pool.respond_to?(:db_config))
|
92
|
+
return base_connection_pool.db_config[:adapter]
|
95
93
|
end
|
96
94
|
end
|
97
95
|
|
98
|
-
|
96
|
+
return 'generic'
|
99
97
|
rescue StandardError => error
|
100
98
|
debug '[SqlNormalizer] lookup_adapter err: ' + error.inspect.to_s
|
101
|
-
|
102
|
-
if ::ActiveRecord::Base.respond_to?(:connection)
|
103
|
-
::ActiveRecord::Base.connection.adapter_name.downcase
|
104
|
-
else
|
105
|
-
nil
|
106
|
-
end
|
99
|
+
return 'generic'
|
107
100
|
end
|
108
101
|
|
109
102
|
def lookup_adapter_config
|
@@ -121,9 +114,9 @@ module StackifyRubyAPM
|
|
121
114
|
nil
|
122
115
|
end
|
123
116
|
|
124
|
-
def check_prepared_stmt(statement, payload)
|
117
|
+
def check_prepared_stmt(statement, payload, adapter)
|
125
118
|
if StackifyRubyAPM.agent.config.prefix_enabled
|
126
|
-
case get_profiler(
|
119
|
+
case get_profiler(adapter)
|
127
120
|
when 'generic', 'mysql', 'sqlite', 'oracle', 'db2'
|
128
121
|
check_prepared_stmt_by_placeholder(payload[:sql].include?('?'), statement, payload)
|
129
122
|
when 'postgresql'
|
data/lib/stackify_apm/version.rb
CHANGED
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.17.
|
4
|
+
version: 1.17.1.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stackify
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -533,9 +533,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
533
533
|
version: 2.0.0
|
534
534
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
535
535
|
requirements:
|
536
|
-
- - "
|
536
|
+
- - ">"
|
537
537
|
- !ruby/object:Gem::Version
|
538
|
-
version:
|
538
|
+
version: 1.3.1
|
539
539
|
requirements: []
|
540
540
|
rubygems_version: 3.4.10
|
541
541
|
signing_key:
|