arsenicum 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/arsenicum/core/broker.rb +5 -1
- data/lib/arsenicum/core/worker.rb +21 -2
- data/lib/arsenicum/main.rb +5 -2
- data/lib/arsenicum/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 27b879f93b75e38c1799be9550a235779497b313
|
4
|
+
data.tar.gz: f2de0aa396dcb3ec54f80a36a88ce69e49b31489
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97a35d672a0d6fd3f42ef2b7d8fdbeed32b8b768aab0a60f3bba8cb3964a544f05749d6523d1ae35e4a315cfaf9067544c49f44672575cbc493d847ca9dc0a02
|
7
|
+
data.tar.gz: 5e9d80d8df1ae7eed0f5502d081645645f8141d0c858ecf9ed57bb9a76cff79847327b006afc2a4c41cce038802550a3d2b70f9d3cc0ae3fbcba7e5e281846de
|
@@ -55,6 +55,10 @@ class Arsenicum::Core::Broker
|
|
55
55
|
broker success_handler, failure_handler, task_id, parameters
|
56
56
|
end
|
57
57
|
|
58
|
+
def stop
|
59
|
+
workers.values.map(&:stop)
|
60
|
+
end
|
61
|
+
|
58
62
|
def remove(worker)
|
59
63
|
mutex.synchronize do
|
60
64
|
workers.delete(worker.pid)
|
@@ -63,7 +67,7 @@ class Arsenicum::Core::Broker
|
|
63
67
|
end
|
64
68
|
|
65
69
|
def reload
|
66
|
-
workers.each(&:stop)
|
70
|
+
workers.values.each(&:stop)
|
67
71
|
|
68
72
|
workers.clear
|
69
73
|
available_workers.clear
|
@@ -67,6 +67,9 @@ class Arsenicum::Core::Worker
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def stop
|
70
|
+
thread.terminate
|
71
|
+
return if Process.waitpid pid, Process::WNOHANG
|
72
|
+
|
70
73
|
write_message ctrl_out_parent, COMMAND_STOP
|
71
74
|
Process.waitpid pid
|
72
75
|
end
|
@@ -91,6 +94,13 @@ class Arsenicum::Core::Worker
|
|
91
94
|
end
|
92
95
|
end
|
93
96
|
|
97
|
+
def active?
|
98
|
+
case state
|
99
|
+
when :waiting, :busy
|
100
|
+
true
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
94
104
|
def switch_state(state)
|
95
105
|
@state = state
|
96
106
|
$0 = process_name
|
@@ -141,7 +151,8 @@ class Arsenicum::Core::Worker
|
|
141
151
|
control, = read_message ctrl_in_child
|
142
152
|
case control
|
143
153
|
when CONTROL_STOP
|
144
|
-
|
154
|
+
info message: '[Control]Received stop command.'
|
155
|
+
thread.terminate
|
145
156
|
switch_state :stopped
|
146
157
|
end
|
147
158
|
end
|
@@ -205,13 +216,21 @@ class Arsenicum::Core::Worker
|
|
205
216
|
def initialize(worker)
|
206
217
|
super do
|
207
218
|
loop do
|
208
|
-
|
219
|
+
begin
|
220
|
+
next sleep(0.5) unless task_request
|
221
|
+
rescue Interrupt
|
222
|
+
break
|
223
|
+
end
|
209
224
|
(success_handler, failure_handler, task_id, parameter) = task_request
|
210
225
|
|
211
226
|
begin
|
212
227
|
worker.ask task_id, *parameter
|
213
228
|
info worker, message: "Completed processing: #{task_id}"
|
214
229
|
success_handler.call
|
230
|
+
rescue Interrupt => e
|
231
|
+
error worker, exception: e
|
232
|
+
failure_handler.call e
|
233
|
+
break
|
215
234
|
rescue Exception => e
|
216
235
|
error worker, exception: e
|
217
236
|
failure_handler.call e
|
data/lib/arsenicum/main.rb
CHANGED
data/lib/arsenicum/version.rb
CHANGED