spool 1.0.4 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/spool/pool.rb +22 -24
- data/lib/spool/version.rb +1 -1
- data/spec/pool_spec.rb +9 -6
- 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: c2ceedfd2a6bd4d1f326480ae51c527710282fad
|
4
|
+
data.tar.gz: b989fcc5b05800eb024673e14e1d60f3cc32a2cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e47d2ccf341e8e0b3b077461e52ac395844fbf62288b468a7ce1949bb9688db74b40409f80c7fcdd903901f5c4b1fb965bb4af16f57b60b27c922400a7cf83c
|
7
|
+
data.tar.gz: c41197756bf9571ba469ca50cd1308a9b2cef7eb1077749c27a5c802c5464d889a5ddd4a40c8e7f1769bca599c4e65867c809d0328f2b03e9fe3d74ecc3e82db
|
data/lib/spool/pool.rb
CHANGED
@@ -56,16 +56,20 @@ module Spool
|
|
56
56
|
logger.info(self.class) { "SPOOL START => #{format_processes}" }
|
57
57
|
|
58
58
|
while running?
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
59
|
+
begin
|
60
|
+
action = actions_queue.pop
|
61
|
+
|
62
|
+
if action
|
63
|
+
logger.info(self.class) { "Starting action #{action[:name]} with params: [#{action[:args].join(', ')}]" }
|
64
|
+
send action[:name], *action[:args]
|
65
|
+
end
|
66
|
+
|
67
|
+
if running?
|
68
|
+
check_status
|
69
|
+
sleep CHECK_TIMEOUT
|
70
|
+
end
|
71
|
+
rescue Exception => e
|
72
|
+
log_error e
|
69
73
|
end
|
70
74
|
end
|
71
75
|
|
@@ -98,7 +102,7 @@ module Spool
|
|
98
102
|
working_processes << Spawner.spawn(configuration)
|
99
103
|
end
|
100
104
|
|
101
|
-
logger.info(self.class) { "Status after new childrens => #{format_processes}
|
105
|
+
logger.info(self.class) { "Status after new childrens => #{format_processes}" }
|
102
106
|
elsif configuration.processes < working_processes.count
|
103
107
|
count_to_kill = working_processes.count - configuration.processes
|
104
108
|
logger.info(self.class) { "Killing #{count_to_kill} children. Current state => #{format_processes}" }
|
@@ -107,9 +111,6 @@ module Spool
|
|
107
111
|
|
108
112
|
logger.info(self.class) { "After killing childers. Current State => #{format_processes}" }
|
109
113
|
end
|
110
|
-
|
111
|
-
rescue Exception => e
|
112
|
-
log_error e
|
113
114
|
end
|
114
115
|
|
115
116
|
def _incr(count=1)
|
@@ -130,15 +131,12 @@ module Spool
|
|
130
131
|
stop_processes working_processes
|
131
132
|
end
|
132
133
|
|
133
|
-
def _stop
|
134
|
+
def _stop
|
134
135
|
logger.info(self.class) { "SPOOL STOP" }
|
135
136
|
|
136
137
|
stop_processes working_processes
|
137
|
-
|
138
|
-
|
139
|
-
logger.error(self.class) { "ERROR IN SPOOL STOP. Timeout error" }
|
140
|
-
ensure
|
141
|
-
_stop!
|
138
|
+
wait_for_stopped all_processes
|
139
|
+
|
142
140
|
@running = false
|
143
141
|
end
|
144
142
|
|
@@ -154,11 +152,9 @@ module Spool
|
|
154
152
|
end
|
155
153
|
|
156
154
|
wait_for_stopped all_processes
|
157
|
-
|
158
|
-
working_processes.clear
|
159
|
-
zombie_processes.clear
|
160
|
-
|
155
|
+
|
161
156
|
File.delete configuration.pid_file if File.exist? configuration.pid_file
|
157
|
+
|
162
158
|
@running = false
|
163
159
|
end
|
164
160
|
|
@@ -179,6 +175,8 @@ module Spool
|
|
179
175
|
while processes_list.any?(&:alive?)
|
180
176
|
sleep 0.01
|
181
177
|
end
|
178
|
+
|
179
|
+
clear_dead_processes
|
182
180
|
end
|
183
181
|
|
184
182
|
def check_processes_to_restart
|
data/lib/spool/version.rb
CHANGED
data/spec/pool_spec.rb
CHANGED
@@ -21,6 +21,7 @@ describe Spool::Pool do
|
|
21
21
|
while pool.all_processes.count < pool.configuration.processes
|
22
22
|
sleep 0.01
|
23
23
|
end
|
24
|
+
sleep 0.1
|
24
25
|
end
|
25
26
|
end
|
26
27
|
|
@@ -119,22 +120,24 @@ describe Spool::Pool do
|
|
119
120
|
pool.all_processes.each { |p| p.must_be :alive?}
|
120
121
|
end
|
121
122
|
|
122
|
-
it 'Stop
|
123
|
+
it 'Stop waits for children to die gracefully' do
|
123
124
|
pool = start_pool do
|
124
125
|
processes 1
|
125
|
-
command 'ruby -e "Signal.trap(:QUIT) {
|
126
|
+
command 'ruby -e "Signal.trap(:QUIT) { sleep 2; exit 0 }; loop { sleep 1 }"'
|
126
127
|
stop_signal :QUIT
|
127
128
|
end
|
128
129
|
|
130
|
+
sleep 1
|
131
|
+
|
129
132
|
process = pool.all_processes[0]
|
130
|
-
|
133
|
+
|
131
134
|
Benchmark.realtime do
|
132
|
-
pool.stop
|
135
|
+
pool.stop
|
133
136
|
while pool.running?
|
134
137
|
sleep SLEEP_TIME
|
135
138
|
end
|
136
|
-
end.must_be
|
137
|
-
|
139
|
+
end.must_be :>, 2
|
140
|
+
|
138
141
|
pool.must_be :stopped?
|
139
142
|
pool.all_processes.must_be_empty
|
140
143
|
process.wont_be :alive?
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gabriel Naiman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: datacenter
|