sv 0.2.3 → 0.2.4
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 +4 -4
- data/lib/sv/api.rb +5 -1
- data/lib/sv/job.rb +5 -5
- data/lib/sv/rolling_restart.rb +34 -12
- data/lib/sv/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d9872b80216a81aad002bd64e8cac3d47b674e4
|
4
|
+
data.tar.gz: c4400932bbce93772eff874fc3912739fc049815
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f92d9e1d12cb73dc9bb07727b248e70ee30c08b4e4ac2b489719b9870c6445c86b591a32ce4a38e4be23e01dd266f6568d39ecfebc886b6ac0743b2f37daa1b5
|
7
|
+
data.tar.gz: fd1c18b1c919a9334e4026a6ff38e30bee9e5e4a4c882c689a11336e7ec7e5f27da570846d3ae9092514beff00a59e76c288605ab208466bf9ce23448b93a28f
|
data/lib/sv/api.rb
CHANGED
@@ -23,7 +23,11 @@ module Sv
|
|
23
23
|
stopping = jobs.select { |j| j.statename == "STOPPING" }
|
24
24
|
stopping.each do |j|
|
25
25
|
puts "killing #{j.group}:#{j.name}"
|
26
|
-
|
26
|
+
begin
|
27
|
+
Process.kill("KILL", j.pid)
|
28
|
+
rescue => e
|
29
|
+
puts "warn #{j.pid}: #{e.message}"
|
30
|
+
end
|
27
31
|
end
|
28
32
|
sleep 1
|
29
33
|
call "supervisor.shutdown"
|
data/lib/sv/job.rb
CHANGED
@@ -51,8 +51,8 @@ module Sv
|
|
51
51
|
set_or_get :stopsignal, args
|
52
52
|
end
|
53
53
|
|
54
|
-
def
|
55
|
-
set_or_get :
|
54
|
+
def stopwait_on_rr(*args)
|
55
|
+
set_or_get :stopwait_on_rr, args
|
56
56
|
end
|
57
57
|
|
58
58
|
def stopwaitsecs(*args)
|
@@ -92,12 +92,12 @@ module Sv
|
|
92
92
|
|
93
93
|
def processes
|
94
94
|
processes = []
|
95
|
-
s = Struct.new(:name, :group, :
|
95
|
+
s = Struct.new(:name, :group, :stopwait_on_rr)
|
96
96
|
numprocs.times do |i|
|
97
97
|
process = s.new
|
98
98
|
process.name = "#{name}_#{i.to_s.rjust(2,"0")}"
|
99
99
|
process.group = group
|
100
|
-
process.
|
100
|
+
process.stopwait_on_rr = stopwait_on_rr
|
101
101
|
processes << process
|
102
102
|
end
|
103
103
|
processes
|
@@ -122,7 +122,7 @@ module Sv
|
|
122
122
|
redirect_stderr: true,
|
123
123
|
stdout_logfile: "/dev/null",
|
124
124
|
stderr_logfile: "",
|
125
|
-
|
125
|
+
stopwait_on_rr: true
|
126
126
|
}
|
127
127
|
end
|
128
128
|
|
data/lib/sv/rolling_restart.rb
CHANGED
@@ -18,10 +18,32 @@ module Sv
|
|
18
18
|
remove_old_groups
|
19
19
|
end
|
20
20
|
|
21
|
+
private
|
22
|
+
|
23
|
+
def init
|
24
|
+
load_new_processes
|
25
|
+
load_new_groups
|
26
|
+
load_old_processes
|
27
|
+
load_old_groups
|
28
|
+
end
|
29
|
+
|
21
30
|
def stop_unneeded_processes
|
22
31
|
unneeded_processes.each do |x|
|
23
32
|
logger.info "#{"-".bold.red} #{x.name}: #{x.group}"
|
24
|
-
|
33
|
+
stop_job x, false
|
34
|
+
end
|
35
|
+
|
36
|
+
sleep 1.5
|
37
|
+
stopping = unneeded_processes.select { |j| j.statename == "STOPPING" }
|
38
|
+
stopping.each do |j|
|
39
|
+
name = j.name.gsub(/_[0-9]+\z/, "")
|
40
|
+
matching_job = @jobs.find { |job| job.name == name }
|
41
|
+
kill_cond = !matching_job || matching_job.stopwait_on_rr
|
42
|
+
if kill_cond
|
43
|
+
kill_job j
|
44
|
+
else
|
45
|
+
puts "skip kill #{j.group}: #{j.name}"
|
46
|
+
end
|
25
47
|
end
|
26
48
|
end
|
27
49
|
|
@@ -34,7 +56,7 @@ module Sv
|
|
34
56
|
#stop older processes with same name
|
35
57
|
old = @old_processes.select { |p| p.name == x.name }
|
36
58
|
old.each do |o|
|
37
|
-
stop_job o, x.
|
59
|
+
stop_job o, x.stopwait_on_rr
|
38
60
|
end
|
39
61
|
|
40
62
|
if old.empty?
|
@@ -61,7 +83,7 @@ module Sv
|
|
61
83
|
end
|
62
84
|
|
63
85
|
def unneeded_processes
|
64
|
-
@
|
86
|
+
@api.jobs.reject { |p| @new_processes.find {|n| n.name == p.name }}
|
65
87
|
end
|
66
88
|
|
67
89
|
def load_old_processes
|
@@ -84,15 +106,6 @@ module Sv
|
|
84
106
|
@new_groups = @new_processes.map { |p| p.group }.uniq
|
85
107
|
end
|
86
108
|
|
87
|
-
def init
|
88
|
-
load_new_processes
|
89
|
-
load_new_groups
|
90
|
-
load_old_processes
|
91
|
-
load_old_groups
|
92
|
-
end
|
93
|
-
|
94
|
-
private
|
95
|
-
|
96
109
|
def stop_job(job, wait)
|
97
110
|
if wait
|
98
111
|
logger.debug "stopping #{job.group}:#{job.name}"
|
@@ -102,5 +115,14 @@ module Sv
|
|
102
115
|
@api.stop_job job.group, job.name, wait: wait
|
103
116
|
end
|
104
117
|
|
118
|
+
def kill_job(job)
|
119
|
+
puts "killing #{job.group}:#{job.name}"
|
120
|
+
begin
|
121
|
+
Process.kill("KILL", job.pid)
|
122
|
+
rescue => e
|
123
|
+
puts "warn #{job.pid}: #{e.message}"
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
105
127
|
end
|
106
128
|
end
|
data/lib/sv/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Neeraj
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-05-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|