arsenicum 0.1.2 → 0.1.3
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 +15 -6
- data/lib/arsenicum/core/worker.rb +4 -2
- data/lib/arsenicum/main.rb +3 -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: 9d49ec4dfbcc45d77e58afdf36d28bee1d06eb68
|
4
|
+
data.tar.gz: 291a2344942b30df1fcc03d274cbb49e76a48560
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f29b77fae0f8c344c64916a44d27d0e02f94a818723d09efda39a8069894344389a9b27b71dd21ff38fc36c093999c6a8fb9b89bee9f82f1d5b25b72e2e5726
|
7
|
+
data.tar.gz: 3193c124fb5c4c090252a233ea8f7428731155d682f1baa7828ce57ae813c92dbf1bf865dec4aca1e23921134df1dbe07c817242e61ba577a41ed07ff3b7fbdc
|
@@ -72,18 +72,27 @@ class Arsenicum::Core::Broker
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def get_back_worker(worker)
|
75
|
-
mutex.synchronize{
|
75
|
+
mutex.synchronize{
|
76
|
+
if worker.active?
|
77
|
+
available_workers[worker.pid] = worker
|
78
|
+
else
|
79
|
+
next_index = workers.count
|
80
|
+
remove worker
|
81
|
+
worker.stop
|
82
|
+
prepare_worker next_index
|
83
|
+
end
|
84
|
+
}
|
76
85
|
end
|
77
86
|
|
78
87
|
private
|
79
88
|
def prepare_workers
|
80
|
-
@worker_count.times do
|
81
|
-
prepare_worker
|
89
|
+
@worker_count.times do |i|
|
90
|
+
prepare_worker i
|
82
91
|
end
|
83
92
|
end
|
84
93
|
|
85
|
-
def prepare_worker
|
86
|
-
worker = Arsenicum::Core::Worker.new(self, worker_options)
|
94
|
+
def prepare_worker index
|
95
|
+
worker = Arsenicum::Core::Worker.new(self, index, worker_options)
|
87
96
|
stock(worker)
|
88
97
|
end
|
89
98
|
|
@@ -105,4 +114,4 @@ class Arsenicum::Core::Broker
|
|
105
114
|
def serialize(value = {})
|
106
115
|
serializer.serialize value
|
107
116
|
end
|
108
|
-
end
|
117
|
+
end
|
@@ -5,11 +5,12 @@ class Arsenicum::Core::Worker
|
|
5
5
|
include Arsenicum::Core::IOHelper
|
6
6
|
|
7
7
|
attr_reader :pid, :in_parent, :out_parent, :thread,
|
8
|
-
:in_child, :out_child, :active, :broker, :serializer, :formatter
|
8
|
+
:in_child, :out_child, :active, :broker, :serializer, :formatter, :index
|
9
9
|
alias_method :active?, :active
|
10
10
|
|
11
|
-
def initialize(broker, worker_configuration)
|
11
|
+
def initialize(broker, index, worker_configuration)
|
12
12
|
@broker = WeakRef.new broker # avoiding circular references.
|
13
|
+
@index = index
|
13
14
|
@serializer = worker_configuration[:serializer]
|
14
15
|
@formatter = worker_configuration[:formatter]
|
15
16
|
@thread = InvokerThread.new(self)
|
@@ -20,6 +21,7 @@ class Arsenicum::Core::Worker
|
|
20
21
|
(@in_child, @out_parent) = open_binary_pipes
|
21
22
|
|
22
23
|
@pid = fork do
|
24
|
+
$0 = "arsenicum[worker][#{index}]"
|
23
25
|
[in_parent, out_parent].each(&:close)
|
24
26
|
|
25
27
|
begin
|
data/lib/arsenicum/main.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
module Arsenicum
|
2
2
|
module Main
|
3
3
|
def run(config_file)
|
4
|
+
$0 = 'arsenicum[main]'
|
5
|
+
|
4
6
|
config = Arsenicum::Configuration.new
|
5
7
|
config_file = File.expand_path config_file
|
6
8
|
|
@@ -8,7 +10,7 @@ module Arsenicum
|
|
8
10
|
config.instance_eval script, config_file, 1
|
9
11
|
|
10
12
|
if config.daemon
|
11
|
-
Process.daemon
|
13
|
+
Process.daemon true, true
|
12
14
|
|
13
15
|
File.open(config.pidfile_path, 'w:UTF-8') do |f|
|
14
16
|
f.puts $$
|
@@ -19,7 +21,6 @@ module Arsenicum
|
|
19
21
|
configure_log config
|
20
22
|
|
21
23
|
threads = config.queue_configurations.map{|qc|qc.build.start_async}
|
22
|
-
|
23
24
|
begin
|
24
25
|
threads.each(&:join)
|
25
26
|
rescue Interrupt
|
data/lib/arsenicum/version.rb
CHANGED