app_profiler 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
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.