sidekiq_alive 2.4.0 → 2.5.0

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: 203a0459203c7e31aa2a223c7a6a2eea009f109697843b83eacd73577606487b
4
- data.tar.gz: b85f281d7fc890744c303a51c46bdd846c3101e0acd44f3557a3549a00f25807
3
+ metadata.gz: 785267eeba9c94f17b29d9df50a17aaa787bfa32b321dc3c097c5d375fc68ef7
4
+ data.tar.gz: ace6c8c8b8285b3a4963db034a7ab439594adb4123db4957829ca81b3677c07b
5
5
  SHA512:
6
- metadata.gz: e2ab4467ab2b6041c4858fd96b91e5172751b4f86af6d6f4846d8e1f86f158a0a3279153e5972e24636d46983f5811191ea83ed4993e18886fda99ff206bec26
7
- data.tar.gz: 2fe20f2e4895506137ba6e4ec6afe3c544eab32eef4a9a31690db808f459e452012ed3646d69c24dec869a2519facc6d9909326af915fe723126b8e212960f5a
6
+ metadata.gz: 51c04d062e6e2bdbdb6bdbcd803024d642847c3a4fe46df673790cc76b1ce1916aae2f90069bc00fd727242b5956ae9646fb52fa227869a08065099a8a09cd95
7
+ data.tar.gz: 3afc2cd02f1b64e68e99e06a556c9c8aaafff5f717f9fd91370b70fb239834bfcf3626819e6e19a054e50ba29bf977503848e4a02aa306727c1b68b79c391815
@@ -42,5 +42,9 @@ module SidekiqAlive
42
42
  def registration_ttl
43
43
  @registration_ttl || time_to_live * 3
44
44
  end
45
+
46
+ def worker_interval
47
+ time_to_live / 2
48
+ end
45
49
  end
46
50
  end
@@ -4,7 +4,7 @@ module SidekiqAlive
4
4
  module Server
5
5
  module Base
6
6
  SHUTDOWN_SIGNAL = "TERM"
7
- QUIET_SIGNAL = "USR1"
7
+ QUIET_SIGNAL = "TSTP"
8
8
 
9
9
  # set web server to quiet mode
10
10
  def quiet!
@@ -72,7 +72,7 @@ module SidekiqAlive
72
72
  attr_reader :path
73
73
 
74
74
  def quiet?
75
- @quiet && (@quiet - Time.now) < SidekiqAlive.config.quiet_timeout
75
+ @quiet && (Time.now - @quiet) < SidekiqAlive.config.quiet_timeout
76
76
  end
77
77
  end
78
78
  end
@@ -51,7 +51,7 @@ module SidekiqAlive
51
51
  private
52
52
 
53
53
  def quiet?
54
- @quiet && (@quiet - Time.now) < SidekiqAlive.config.quiet_timeout
54
+ @quiet && (Time.now - @quiet) < SidekiqAlive.config.quiet_timeout
55
55
  end
56
56
 
57
57
  def handler
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SidekiqAlive
4
- VERSION = "2.4.0"
4
+ VERSION = "2.5.0"
5
5
  end
@@ -12,8 +12,9 @@ module SidekiqAlive
12
12
 
13
13
  # Writes the liveness in Redis
14
14
  write_living_probe
15
+ remove_orphaned_queues
15
16
  # schedules next living probe
16
- self.class.perform_in(config.time_to_live / 2, current_hostname)
17
+ self.class.perform_in(config.worker_interval, current_hostname)
17
18
  end
18
19
 
19
20
  def write_living_probe
@@ -29,6 +30,17 @@ module SidekiqAlive
29
30
  end
30
31
  end
31
32
 
33
+ # Removes orphaned Sidekiq queues left behind by unexpected instance shutdowns (e.g., due to OOM)
34
+ def remove_orphaned_queues
35
+ # If the worker isn't executed within this window, the lifeness key expires
36
+ latency_threshold = config.time_to_live - config.worker_interval
37
+ Sidekiq::Queue.all
38
+ .filter { |q| q.name.start_with?(config.queue_prefix.to_s) }
39
+ .filter { |q| q.latency > latency_threshold }
40
+ .filter { |q| q.size == 1 && q.all? { |job| job.klass == self.class.name } }
41
+ .each(&:clear)
42
+ end
43
+
32
44
  def current_hostname
33
45
  SidekiqAlive.hostname
34
46
  end
data/lib/sidekiq_alive.rb CHANGED
@@ -148,7 +148,7 @@ module SidekiqAlive
148
148
  end
149
149
 
150
150
  def successful_startup_text
151
- "Successfully started sidekiq-alive, registered with key: "\
151
+ "Successfully started sidekiq-alive, registered with key: " \
152
152
  "#{current_instance_register_key} on set #{HOSTNAME_REGISTRY}"
153
153
  end
154
154
 
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq_alive
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrejs Cunskis
8
8
  - Artur Pañach
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-02-15 00:00:00.000000000 Z
12
+ date: 2025-05-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -73,14 +73,14 @@ dependencies:
73
73
  requirements:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '4.0'
76
+ version: '5.0'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: '4.0'
83
+ version: '5.0'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: rubocop-shopify
86
86
  requirement: !ruby/object:Gem::Requirement
@@ -95,20 +95,34 @@ dependencies:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
97
  version: '2.10'
98
+ - !ruby/object:Gem::Dependency
99
+ name: semver2
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '3.4'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '3.4'
98
112
  - !ruby/object:Gem::Dependency
99
113
  name: solargraph
100
114
  requirement: !ruby/object:Gem::Requirement
101
115
  requirements:
102
116
  - - "~>"
103
117
  - !ruby/object:Gem::Version
104
- version: 0.50.0
118
+ version: 0.54.0
105
119
  type: :development
106
120
  prerelease: false
107
121
  version_requirements: !ruby/object:Gem::Requirement
108
122
  requirements:
109
123
  - - "~>"
110
124
  - !ruby/object:Gem::Version
111
- version: 0.50.0
125
+ version: 0.54.0
112
126
  - !ruby/object:Gem::Dependency
113
127
  name: gserver
114
128
  requirement: !ruby/object:Gem::Requirement
@@ -132,7 +146,7 @@ dependencies:
132
146
  version: '5'
133
147
  - - "<"
134
148
  - !ruby/object:Gem::Version
135
- version: '8'
149
+ version: '9'
136
150
  type: :runtime
137
151
  prerelease: false
138
152
  version_requirements: !ruby/object:Gem::Requirement
@@ -142,7 +156,7 @@ dependencies:
142
156
  version: '5'
143
157
  - - "<"
144
158
  - !ruby/object:Gem::Version
145
- version: '8'
159
+ version: '9'
146
160
  description: |
147
161
  SidekiqAlive offers a solution to add liveness probe of a Sidekiq instance.
148
162
 
@@ -183,9 +197,9 @@ metadata:
183
197
  homepage_uri: https://github.com/arturictus/sidekiq_alive
184
198
  source_code_uri: https://github.com/arturictus/sidekiq_alive
185
199
  changelog_uri: https://github.com/arturictus/sidekiq_alive/releases
186
- documentation_uri: https://github.com/arturictus/sidekiq_alive/blob/v2.4.0/README.md
200
+ documentation_uri: https://github.com/arturictus/sidekiq_alive/blob/v2.5.0/README.md
187
201
  bug_tracker_uri: https://github.com/arturictus/sidekiq_alive/issues
188
- post_install_message:
202
+ post_install_message:
189
203
  rdoc_options: []
190
204
  require_paths:
191
205
  - lib
@@ -193,15 +207,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
193
207
  requirements:
194
208
  - - ">="
195
209
  - !ruby/object:Gem::Version
196
- version: 2.7.0
210
+ version: '3.1'
197
211
  required_rubygems_version: !ruby/object:Gem::Requirement
198
212
  requirements:
199
213
  - - ">="
200
214
  - !ruby/object:Gem::Version
201
215
  version: '0'
202
216
  requirements: []
203
- rubygems_version: 3.3.26
204
- signing_key:
217
+ rubygems_version: 3.5.22
218
+ signing_key:
205
219
  specification_version: 4
206
220
  summary: Liveness probe for sidekiq on Kubernetes deployments.
207
221
  test_files: []