sidekiq_graceful_shutdown 0.1.1 → 0.1.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5bf94ac0b34c5efea54149b144dc5290f65f5b53c55859423686b969e1940187
|
4
|
+
data.tar.gz: 5785037fe55c19b537bd1bc482b10f17b49614aacf62336df6a4f2b1090c6b1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9d99cb357c2140f9fa0bedf38d9728d8ca5945ae19d1569fabb132b7a24f89bbc55781d2c18b118362dfcd7298115a1ae875c8017c87c5fac66e9b6adb525868
|
7
|
+
data.tar.gz: 669cbe6d29529709419261506d86fa6c6a09332ab9382e3ba8172c37df3123397633bfdb62eb60663fa71ac771fb1aa8bc95dea07c1c3dd9dad8fb4893ce4a77
|
@@ -1,42 +1,11 @@
|
|
1
1
|
namespace :sidekiq_graceful_shutdown do
|
2
|
-
desc 'prepare'
|
3
|
-
task
|
4
|
-
|
5
|
-
hostname = Socket.gethostname
|
6
|
-
|
7
|
-
SidekiqGracefulShutdown::Sidekiq.quit_processes_by_hostname(hostname)
|
8
|
-
|
9
|
-
loop do
|
10
|
-
processes = SidekiqGracefulShutdown::Sidekiq.find_processes_by_hostname(hostname)
|
11
|
-
if processes.all? { |process| process['quiet'] == 'true' && process['busy'] == 0 }
|
12
|
-
break
|
13
|
-
end
|
14
|
-
|
15
|
-
sleep interval_sec
|
16
|
-
end
|
2
|
+
desc 'prepare shutdown'
|
3
|
+
task prepare_shutdown: :environment do
|
4
|
+
SidekiqGracefulShutdown::Sidekiq.prepare_shutdown
|
17
5
|
end
|
18
6
|
|
19
7
|
desc 'shutdown'
|
20
8
|
task shutdown: :environment do
|
21
|
-
|
22
|
-
hostname = Socket.gethostname
|
23
|
-
|
24
|
-
SidekiqGracefulShutdown::Sidekiq.quit_processes_by_hostname(hostname)
|
25
|
-
|
26
|
-
loop do
|
27
|
-
processes = SidekiqGracefulShutdown::Sidekiq.find_processes_by_hostname(hostname)
|
28
|
-
if processes.all? { |process| process['quiet'] == 'true' && process['busy'] == 0 }
|
29
|
-
processes.each do |process|
|
30
|
-
begin
|
31
|
-
Process.kill('TERM', process['pid'])
|
32
|
-
rescue Errno::ESRCH
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
break
|
37
|
-
end
|
38
|
-
|
39
|
-
sleep interval_sec
|
40
|
-
end
|
9
|
+
SidekiqGracefulShutdown::Sidekiq.shutdown
|
41
10
|
end
|
42
11
|
end
|
@@ -1,6 +1,45 @@
|
|
1
1
|
module SidekiqGracefulShutdown
|
2
2
|
class Sidekiq
|
3
3
|
class << self
|
4
|
+
def shutdown
|
5
|
+
interval_sec = 5.seconds
|
6
|
+
hostname = Socket.gethostname
|
7
|
+
|
8
|
+
quit_processes_by_hostname(hostname)
|
9
|
+
|
10
|
+
loop do
|
11
|
+
processes = find_processes_by_hostname(hostname)
|
12
|
+
if processes.all? { |process| process['quiet'] == 'true' && process['busy'] == 0 }
|
13
|
+
processes.each do |process|
|
14
|
+
begin
|
15
|
+
Process.kill('TERM', process['pid'])
|
16
|
+
rescue Errno::ESRCH
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
break
|
21
|
+
end
|
22
|
+
|
23
|
+
sleep interval_sec
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def prepare_shutdown
|
28
|
+
interval_sec = 5.seconds
|
29
|
+
hostname = Socket.gethostname
|
30
|
+
|
31
|
+
quit_processes_by_hostname(hostname)
|
32
|
+
|
33
|
+
loop do
|
34
|
+
processes = find_processes_by_hostname(hostname)
|
35
|
+
if processes.all? { |process| process['quiet'] == 'true' && process['busy'] == 0 }
|
36
|
+
break
|
37
|
+
end
|
38
|
+
|
39
|
+
sleep interval_sec
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
4
43
|
def find_processes_by_hostname(hostname)
|
5
44
|
::Sidekiq::ProcessSet.new.to_a.select { |p| p['hostname'] == hostname }
|
6
45
|
end
|