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 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