catpm 0.8.1 → 0.8.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: 5e79483c6546d21e4b6054d481f3625616eb0c4044f1251d11be907983dadeb7
4
- data.tar.gz: 555afaca6bfb09499fea0c24359ee7709d8b982759fb6717a577882d64c543cc
3
+ metadata.gz: 633997968560e5edc6d66486f85b4cff60c8e892124232edd630314f75b6a7b0
4
+ data.tar.gz: d1fdd5749544665adaba2e2f039351bd65dd1a79377f27f94226821622dbfc36
5
5
  SHA512:
6
- metadata.gz: 2971732b88f54566048545753164728886136408fc0db9d82e20652c08b098973d0889a839fd66cd4a504def1a9c576cf2eab822dac9b381eda0f2e40d908123
7
- data.tar.gz: c8c7b98c039e7c483e8d4e3e3a9e8c9f06a58e7cd396d303da5bd37c9771d6b463d84d62c9da5c9f87e3e1f688ebefe7bb8b016d7eac477030588513b2e0988c
6
+ metadata.gz: b17b25c4808cba60b8ba4a5a7360030721e966832297e8edd04a66f5f3ec7714fc1f95abf539b69b1564dab75a3e89579e1272ce02929a1d8c6a7cb0130ba7a3
7
+ data.tar.gz: 14ae5ad4fb726e28285f3ea0c9e558183c7228caa16272c6ca7656474dc691e2e96899cb17fcbbdd481cc7f643f065ccfa90ad78a79c2084683a45c5b61a28da
@@ -14,24 +14,32 @@ module Catpm
14
14
  @mutex = Mutex.new
15
15
  @samplers = []
16
16
  @thread = nil
17
+ @stop = false
17
18
  end
18
19
 
19
20
  def register(sampler)
20
21
  @mutex.synchronize do
21
22
  @samplers << sampler
23
+ @stop = false
22
24
  start_thread unless @thread&.alive?
23
25
  end
24
26
  end
25
27
 
26
28
  def unregister(sampler)
27
- @mutex.synchronize { @samplers.delete(sampler) }
29
+ @mutex.synchronize do
30
+ @samplers.delete(sampler)
31
+ @stop = true if @samplers.empty?
32
+ end
28
33
  end
29
34
 
30
35
  private
31
36
 
32
37
  def start_thread
38
+ @stop = false
33
39
  @thread = Thread.new do
34
40
  loop do
41
+ break if @stop
42
+
35
43
  interval = if Catpm.config.instrument_call_tree
36
44
  [CALL_TREE_SAMPLE_INTERVAL, Catpm.config.stack_sample_interval].min
37
45
  else
@@ -45,8 +53,10 @@ module Catpm
45
53
  end
46
54
 
47
55
  def sample_all
48
- now = Process.clock_gettime(Process::CLOCK_MONOTONIC)
49
56
  targets = @mutex.synchronize { @samplers.dup }
57
+ return if targets.empty?
58
+
59
+ now = Process.clock_gettime(Process::CLOCK_MONOTONIC)
50
60
  targets.each { |s| s.capture(now) }
51
61
  end
52
62
  end
data/lib/catpm/trace.rb CHANGED
@@ -76,18 +76,15 @@ module Catpm
76
76
  owns_segments = false
77
77
 
78
78
  if req_segments.nil? && config.instrument_segments
79
+ use_sampler = config.instrument_stack_sampler || config.instrument_call_tree
79
80
  req_segments = RequestSegments.new(
80
81
  max_segments: config.max_segments_per_request,
81
82
  request_start: Process.clock_gettime(Process::CLOCK_MONOTONIC),
82
- stack_sample: config.instrument_stack_sampler
83
+ stack_sample: use_sampler,
84
+ call_tree: config.instrument_call_tree
83
85
  )
84
86
  Thread.current[:catpm_request_segments] = req_segments
85
87
  owns_segments = true
86
-
87
- if config.instrument_call_tree
88
- call_tracer = CallTracer.new(request_segments: req_segments)
89
- call_tracer.start
90
- end
91
88
  end
92
89
 
93
90
  if req_segments
@@ -105,7 +102,6 @@ module Catpm
105
102
  raise
106
103
  ensure
107
104
  duration = (Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time) * 1000.0
108
- call_tracer&.stop
109
105
  req_segments&.pop_span(ctrl_idx) if ctrl_idx
110
106
  req_segments&.stop_sampler
111
107
 
data/lib/catpm/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Catpm
4
- VERSION = '0.8.1'
4
+ VERSION = '0.8.2'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: catpm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''