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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 227759f26fc6a576603f6ea5454a801b952c61e5
4
- data.tar.gz: c6ce1168091c355e7a2258a1f181c28c18899121
3
+ metadata.gz: 27b879f93b75e38c1799be9550a235779497b313
4
+ data.tar.gz: f2de0aa396dcb3ec54f80a36a88ce69e49b31489
5
5
  SHA512:
6
- metadata.gz: de846aa8417608539d5d28a85cb66a8c3f6737d25300474d6adf6fa339185de70b9a115c8ec509ce864b1dfa013da41f5e253055de17eb0a9792b1cda5b9e59c
7
- data.tar.gz: 928123fa45f80afb3ae8f98117b3b00da665f42017e77f46d80279f7aba28c801d770e23f8768a365eb61ea668e0d94c0d7c97f6d23143b8efde10ba6b5d31b3
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
- thread.stop
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
- next sleep(0.5) unless task_request
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
@@ -52,8 +52,11 @@ module Arsenicum
52
52
 
53
53
  def trap_signal
54
54
  [:TERM, :INT,].each do |sig|
55
- queues.each(&:stop)
56
- exit 1
55
+ Signal.trap sig do
56
+ puts "signal received"
57
+ queues.each(&:stop)
58
+ exit 1
59
+ end
57
60
  end
58
61
  end
59
62
 
@@ -1,3 +1,3 @@
1
1
  module Arsenicum
2
- VERSION = '0.3.0'
2
+ VERSION = '0.3.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arsenicum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - condor