app_profiler 0.2.4 → 0.2.5

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: 8d37c7a09664237b5de220c0eeb2e06e5d71e962c475d8b5d48379908f1fcde6
4
- data.tar.gz: de727300e3a86062ba2924aee795553098bd5f0fa1b03bf9b422d17caa99b90b
3
+ metadata.gz: 36a0afed63f70a16ab782039e981583c16e80f846eb6caf6cefce219d7934d0d
4
+ data.tar.gz: eda36bd2a579b25757db0e872c3f2aa1cbdda60ddf486b4bd3ad90f34f74829c
5
5
  SHA512:
6
- metadata.gz: 67bc3d4a7da8dd12063cae5d82c8cb8643133b36cbe42456dd903b1182b4b2c6687073cddcdcb33b84cc76a27ce7d8a2ea3fc135f6f462591bc90e02fd87cb62
7
- data.tar.gz: 7efb402266de2269237d9d170d94d7689146a94e1a721488f462638ca18a0d8c4335e3a3c68452791a554067214429b9ce7903dfb5cb8fea293607db8bb07974
6
+ metadata.gz: 8ef999eb872722bca7b910b88df8a091c756b4d9f0e95da4ac770aacfb0b5454a160ca37b8c13852e25e5fd8aecf698f6bc06f6669104cbbb02c5af033b66a80
7
+ data.tar.gz: 2896ca3138e8b631445b628bcd6206e77bcd94fbef57c00560b0a63f8677b3103555eef97aabbb936722406d5667ec6c8885c9224fe85cd82d2619f45fdb9051
@@ -40,7 +40,7 @@ module AppProfiler
40
40
  end
41
41
 
42
42
  def release_run_lock
43
- self.class.run_lock.unlock
43
+ self.class.run_lock.unlock if self.class.run_lock.locked?
44
44
  rescue ThreadError
45
45
  AppProfiler.logger.warn("[AppProfiler] run lock not released as it was never acquired")
46
46
  end
@@ -8,6 +8,10 @@ module AppProfiler
8
8
  @data[:mode]
9
9
  end
10
10
 
11
+ def metadata
12
+ @data[:metadata]
13
+ end
14
+
11
15
  def format
12
16
  FILE_EXTENSION
13
17
  end
@@ -8,6 +8,10 @@ module AppProfiler
8
8
  @data[:meta][:mode]
9
9
  end
10
10
 
11
+ def metadata
12
+ @data[:meta]
13
+ end
14
+
11
15
  def format
12
16
  FILE_EXTENSION
13
17
  end
@@ -81,7 +81,7 @@ module AppProfiler
81
81
  end
82
82
 
83
83
  def metadata
84
- @data[:metadata]
84
+ raise NotImplementedError
85
85
  end
86
86
 
87
87
  def mode
@@ -5,12 +5,12 @@ require "app_profiler/sampler/vernier_config"
5
5
  module AppProfiler
6
6
  module Sampler
7
7
  class Config
8
- attr_reader :sample_rate, :targets, :cpu_interval, :backends_probability
8
+ attr_reader :sample_rate, :targets, :exclude_targets, :cpu_interval, :backends_probability
9
9
 
10
10
  SAMPLE_RATE = 0.001 # 0.1%
11
11
  TARGETS = ["/"]
12
12
  BACKEND_PROBABILITES = { stackprof: 1.0, vernier: 0.0 }
13
- @backends = {}
13
+ EMPTY_ARRAY = []
14
14
 
15
15
  def initialize(sample_rate: SAMPLE_RATE,
16
16
  targets: TARGETS,
@@ -18,7 +18,8 @@ module AppProfiler
18
18
  backends_config: {
19
19
  stackprof: StackprofConfig.new,
20
20
  },
21
- paths: nil)
21
+ paths: nil,
22
+ exclude_targets: EMPTY_ARRAY)
22
23
 
23
24
  if sample_rate < 0.0 || sample_rate > 1.0
24
25
  raise ArgumentError, "sample_rate must be between 0 and 1"
@@ -32,6 +33,7 @@ module AppProfiler
32
33
  @targets = paths || targets
33
34
  @backends_config = backends_config
34
35
  @backends_probability = backends_probability
36
+ @exclude_targets = exclude_targets
35
37
  end
36
38
 
37
39
  def get_backend_config(backend_name)
@@ -3,6 +3,7 @@
3
3
  require "app_profiler/sampler/config"
4
4
  module AppProfiler
5
5
  module Sampler
6
+ @excluded_cache = {}
6
7
  class << self
7
8
  def profile_params(request, config)
8
9
  profile_params_for(request.path, config)
@@ -18,6 +19,12 @@ module AppProfiler
18
19
 
19
20
  def sample?(config, target)
20
21
  return false if Kernel.rand > config.sample_rate
22
+ return false if @excluded_cache[target]
23
+
24
+ if config.exclude_targets.any? { |t| target.match?(t) }
25
+ @excluded_cache[target] = true
26
+ return false
27
+ end
21
28
 
22
29
  return false unless config.targets.any? { |t| target.match?(t) }
23
30
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AppProfiler
4
- VERSION = "0.2.4"
4
+ VERSION = "0.2.5"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: app_profiler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gannon McGibbon
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2024-09-06 00:00:00.000000000 Z
16
+ date: 2024-10-15 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: activesupport
@@ -184,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
184
  - !ruby/object:Gem::Version
185
185
  version: '0'
186
186
  requirements: []
187
- rubygems_version: 3.5.18
187
+ rubygems_version: 3.5.21
188
188
  signing_key:
189
189
  specification_version: 4
190
190
  summary: Collect performance profiles for your Rails application.