apmlens 1.0.1 → 1.0.2

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: 96b1a8970c53f0792568561d9dccdd2d4e40b7d137c1b6d2f4ae8660e40e6c5c
4
- data.tar.gz: ac5e0bddbc9f6cbe7c6c93943be155e958e460acc01c328605f6fbe7de0c96db
3
+ metadata.gz: 907b56190012cac5d6b97c5dcb3ef8cb80f4d8cf2733b1dc97c2dbadba892b06
4
+ data.tar.gz: 7302518a1bbc227cc3db6b7fd2da5754474b0e243ed3b06b5b5cc4d16a18ff27
5
5
  SHA512:
6
- metadata.gz: 40f838f1b7e7d4530e0fe73b315b913289a9811628dc33ac227883f05aaf6473351fbb194dd22c1d70ea2c0a0121ac4c4bacd8ab3b56422b9305f8fdd4bc670b
7
- data.tar.gz: 6202062950209f89c7b7f14b69eeca399c6f2673ea3e73dacc842dfb071cd68978a6358c231f95c54eda028474bb480d5d05fb602c1717a293508ddfaa996563
6
+ metadata.gz: 16d59645c2f00d2ccdae41828a00da48cce0d0eb39f63639e55165aac8e25bfdaadac84d181a8838fd6272f327532fa051eb4f2a21cf2ef5dc8bf4f7a6feea9a
7
+ data.tar.gz: 8427bbe4236ddf5865f8317abb7411291db96b6edb5b4999525f3ec461e70110a74bf53f1f2db1b0d92aaa64fd2bd11950ab43e8d003990382230fd9d5e9ae65
@@ -20,15 +20,16 @@ module Apmlens
20
20
  query_tracker = Thread.current[:apmlens_query_tracker]
21
21
  if query_tracker
22
22
  fingerprint = Railtie.fingerprint_sql(payload[:sql])
23
- query_tracker[fingerprint] ||= 0
24
- query_tracker[fingerprint] += 1
23
+ query_tracker[fingerprint] ||= { count: 0, stack_trace: Rails.backtrace_cleaner.clean(caller).first(20) }
24
+ query_tracker[fingerprint][:count] += 1
25
25
  end
26
26
 
27
27
  # Slow Query Detection
28
28
  if duration > Apmlens.configuration.slow_query_threshold
29
29
  Apmlens.capture_trace("slow_query.detected", duration, {
30
30
  sql: payload[:sql],
31
- sql_fingerprint: Railtie.fingerprint_sql(payload[:sql])
31
+ sql_fingerprint: Railtie.fingerprint_sql(payload[:sql]),
32
+ stack_trace: Rails.backtrace_cleaner.clean(caller).first(20)
32
33
  })
33
34
  end
34
35
  end
@@ -45,12 +46,13 @@ module Apmlens
45
46
  # Check for N+1 patterns
46
47
  query_tracker = Thread.current[:apmlens_query_tracker]
47
48
  if query_tracker
48
- query_tracker.each do |fingerprint, count|
49
- if count > 5 # Threshold for N+1 detection
50
- Apmlens.capture_trace("n_plus_one.detected", count, {
49
+ query_tracker.each do |fingerprint, data|
50
+ if data[:count] > 5 # Threshold for N+1 detection
51
+ Apmlens.capture_trace("n_plus_one.detected", data[:count], {
51
52
  sql_fingerprint: fingerprint,
52
53
  controller: payload[:controller],
53
- action: payload[:action]
54
+ action: payload[:action],
55
+ stack_trace: data[:stack_trace]
54
56
  })
55
57
  end
56
58
  end
@@ -65,7 +67,8 @@ module Apmlens
65
67
  duration = (finish - start) * 1000
66
68
  Apmlens.capture_trace("large_result_set.detected", duration, {
67
69
  record_count: record_count,
68
- class_name: payload[:class_name]
70
+ class_name: payload[:class_name],
71
+ stack_trace: Rails.backtrace_cleaner.clean(caller).first(20)
69
72
  })
70
73
  end
71
74
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Apmlens
4
- VERSION = "1.0.1"
4
+ VERSION = "1.0.2"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apmlens
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - APMLens Team