sv 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9dcb2b89e314decf911279e9cd7feb6001c564d9
4
- data.tar.gz: c3f84f93c4ce52fc04016f02bed990ecdd43feb0
3
+ metadata.gz: 9d9872b80216a81aad002bd64e8cac3d47b674e4
4
+ data.tar.gz: c4400932bbce93772eff874fc3912739fc049815
5
5
  SHA512:
6
- metadata.gz: ebc2862268835ea7475aba32fb9054de6d0b52ccd9d0e646f40ce52895fdd1620c9a3c2b5b471f9f7951f0f28e5ff6140d0fa3ec81aca6faf384244628486811
7
- data.tar.gz: d9271545bdc58cbe294f2217575ea304155045f46e88755929a0c933eb2c47fe7db3a6f18de86d00e6e6b21339ee01d77e127797de39d16a0a05383ef3e9c42c
6
+ metadata.gz: f92d9e1d12cb73dc9bb07727b248e70ee30c08b4e4ac2b489719b9870c6445c86b591a32ce4a38e4be23e01dd266f6568d39ecfebc886b6ac0743b2f37daa1b5
7
+ data.tar.gz: fd1c18b1c919a9334e4026a6ff38e30bee9e5e4a4c882c689a11336e7ec7e5f27da570846d3ae9092514beff00a59e76c288605ab208466bf9ce23448b93a28f
@@ -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
- Process.kill("KILL", j.pid)
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"
@@ -51,8 +51,8 @@ module Sv
51
51
  set_or_get :stopsignal, args
52
52
  end
53
53
 
54
- def stopwait(*args)
55
- set_or_get :stopwait, args
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, :stopwait)
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.stopwait = stopwait
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
- stopwait: true
125
+ stopwait_on_rr: true
126
126
  }
127
127
  end
128
128
 
@@ -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
- @api.stop_job x.group, x.name
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.stopwait
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
- @old_processes.reject { |p| @new_processes.find {|n| n.name == p.name }}
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
@@ -1,3 +1,3 @@
1
1
  module Sv
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.4"
3
3
  end
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.3
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-04-27 00:00:00.000000000 Z
11
+ date: 2017-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler