arsenicum 0.3.0 → 0.3.1

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