neetodeploy-autoscale 2.0.5 → 2.0.6

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: 5c7265603142b311a9ff85c2bb44678261113c889ef554399132dd6f4d41931d
4
- data.tar.gz: 6ab7a1fc5cb14f7b2c7ebb93fea67266cbe9c34b41abd4d3bcf2e4c7ecd41c0f
3
+ metadata.gz: bffc52d124f0b677da6669f6b34b26347b0710396d362a17af10cb22dbf029a9
4
+ data.tar.gz: dd98640212220a0d4426d2fce3066f4764e1194a79da602b03428bc0c10e7dc3
5
5
  SHA512:
6
- metadata.gz: 628156b95ff204ecbc18ca301c318618d474495c506896859ecdd3f53c93dcda4a3e7bf18dc4c69d1d4eb5db2dfdb99dd49a9d051bc3f856d9d58559f30a4e89
7
- data.tar.gz: ac9de8142aa4599e664c4637ff3738dcbeb9888ec67c98029e0d1dbf734e050d4943cc5a60a1cca67e70b37b6823dacbfa4c7137387de795b7e1c60c66261205
6
+ metadata.gz: 1e1b0fe71a3a89605214d79c971f63f52bbd75804dabf4b75b817824e65941a861fe7f32f159efc7126f5d53da8b1755b954d96efe8bb66341097a9afcad38a6
7
+ data.tar.gz: fa8e816a7be8dbdb7395272cd1c4ce67509b1048fb41feca137a62802ffb8607ebc3edc399c17faaf1a9fdbcfce5d5c6ef39ca5f0bf7cd959badcf1ebc46ce78
@@ -32,7 +32,7 @@ module Neetodeploy
32
32
  end
33
33
 
34
34
  def running?
35
- @pid == Process.pid and @thread&.alive?
35
+ @pid == Process.pid && @thread&.alive?
36
36
  end
37
37
 
38
38
  def start_thread_with_collector_loop(config = Config.instance)
@@ -29,24 +29,30 @@ module Neetodeploy
29
29
  end
30
30
 
31
31
  def running?
32
- @pid == Process.pid and @thread&.alive?
32
+ @pid == Process.pid && @thread&.alive?
33
33
  end
34
34
 
35
35
  def start_thread_with_collector_loop(config = Config.instance)
36
36
  @thread = Thread.new do
37
+ # Use a non-recursive loop pattern to avoid SystemStackError and ThreadError on shutdown
37
38
  loop do
38
- run_sidekiq_metrics_collection
39
- multiplier = 1 - (rand / 4)
40
- sleep config.report_interval_seconds * multiplier
41
- end
42
- rescue StandardError => e
43
- logger.error("Sidekiq metrics collector thread terminated with error: #{e.message}")
44
- logger.error(e.backtrace.join("\n")) if e.backtrace
45
- ensure
46
- if @pid == Process.pid && !@thread.nil?
47
- logger.info("Restarting Sidekiq metrics collector thread")
48
- sleep(5)
49
- start_thread_with_collector_loop
39
+ begin
40
+ loop do
41
+ run_sidekiq_metrics_collection
42
+ multiplier = 1 - (rand / 4)
43
+ sleep config.report_interval_seconds * multiplier
44
+ end
45
+ rescue StandardError => e
46
+ logger.error("Sidekiq metrics collector thread terminated with error: #{e.message}")
47
+ logger.error(e.backtrace.join("\n")) if e.backtrace
48
+
49
+ # Only restart if we're still the same process and thread should continue
50
+ # Check if Sidekiq is shutting down to avoid ThreadError during shutdown
51
+ break unless @pid == Process.pid && !@thread.nil? && sidekiq_running?
52
+
53
+ logger.info("Restarting Sidekiq metrics collector thread")
54
+ sleep(5)
55
+ end
50
56
  end
51
57
  end
52
58
  end
@@ -73,6 +79,11 @@ module Neetodeploy
73
79
  defined?(::Sidekiq) && ::Sidekiq.respond_to?(:redis)
74
80
  end
75
81
 
82
+ def sidekiq_running?
83
+ # Check if Sidekiq server is still running to avoid restarting during shutdown
84
+ defined?(::Sidekiq) && ::Sidekiq.respond_to?(:server?) && ::Sidekiq.server?
85
+ end
86
+
76
87
  def collect_queue_metrics(queue)
77
88
  queue_name = queue.name
78
89
  latency_ms = (queue.latency * 1000).ceil
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Neetodeploy
4
4
  module Autoscale
5
- VERSION = "2.0.5"
5
+ VERSION = "2.0.6"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neetodeploy-autoscale
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.5
4
+ version: 2.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sreeram Venkitesh
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-11-13 00:00:00.000000000 Z
11
+ date: 2025-11-14 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: For automatically scaling your Rails application based on network metrics
14
14
  email: