oni 4.2.3 → 4.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/oni/daemon.rb +25 -20
- data/lib/oni/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 19d78db0264593a2aea45885eed49c3cf655379b730708ffb9d0d3449f0738fe
|
4
|
+
data.tar.gz: d4f9a83030eccd4cdfd786605c1c982f997ad037c922301fecf747915434adda
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9de57477ff466dca18c6e8e20fb6395e56a4d3dbbecd42d39aa64299e04c88fb8367e02d319ab7143a4a2b97da027be173a956c7f0aa98920c5f58b6ed9c982
|
7
|
+
data.tar.gz: e809d85d9615508e2f5e59aa8697e4d7b14727c415178e5b977986db69749561d588614d62d6ad4bfe71ed3494fa5d1df4bee5e336fe169fef334ae21df951e3
|
data/lib/oni/daemon.rb
CHANGED
@@ -41,7 +41,7 @@ module Oni
|
|
41
41
|
# is defined.
|
42
42
|
#
|
43
43
|
def initialize
|
44
|
-
@daemon_workers = {}
|
44
|
+
@daemon_workers = Hash.new{ |h, k| h[k] = [] }
|
45
45
|
|
46
46
|
after_initialize if respond_to?(:after_initialize)
|
47
47
|
end
|
@@ -56,19 +56,15 @@ module Oni
|
|
56
56
|
def start
|
57
57
|
before_start if respond_to? :before_start
|
58
58
|
|
59
|
-
|
60
|
-
|
59
|
+
wthreads = if threads <= 1 then [run_thread]
|
60
|
+
elsif workers <= 1 then standard_worker
|
61
|
+
else wthreads = Array.new(workers).map{ |i| spawn_worker i } end
|
61
62
|
|
62
|
-
threads = Array.new workers do |i|
|
63
|
-
Thread.new do
|
64
|
-
Process.wait fork{ spawn_worker i+1 } while true
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
sleep 3
|
69
63
|
after_start if respond_to? :after_start
|
70
64
|
|
71
|
-
|
65
|
+
%i[INT TERM].each{ |sig| trap(sig){ stop } }
|
66
|
+
wthreads.each(&:join) if workers > 1
|
67
|
+
|
72
68
|
rescue => error
|
73
69
|
error(error)
|
74
70
|
end
|
@@ -188,11 +184,22 @@ module Oni
|
|
188
184
|
#
|
189
185
|
# @return [Thread]
|
190
186
|
#
|
191
|
-
def spawn_worker i = nil
|
192
|
-
|
187
|
+
def spawn_worker i = nil, &block
|
188
|
+
Thread.new do
|
189
|
+
loop do # keep restarting for OOM and other cases
|
190
|
+
pid = fork do
|
191
|
+
Process.setproctitle "#{$0}: worker #{i}" if i
|
193
192
|
|
194
|
-
|
195
|
-
|
193
|
+
if block then yield else standard_worker end
|
194
|
+
end
|
195
|
+
Process.wait pid
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
def standard_worker
|
201
|
+
Array.new(threads).map do
|
202
|
+
spawn_thread.tap{ |t| daemon_workers[Process.pid] << t }
|
196
203
|
end.each(&:join)
|
197
204
|
end
|
198
205
|
|
@@ -202,11 +209,9 @@ module Oni
|
|
202
209
|
# @return [Thread]
|
203
210
|
#
|
204
211
|
def spawn_thread
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
return thread
|
212
|
+
Thread.new{ run_thread }.tap do |t|
|
213
|
+
t.abort_on_exception = true
|
214
|
+
end
|
210
215
|
end
|
211
216
|
|
212
217
|
##
|
data/lib/oni/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oni
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yorick Peterse
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-06-
|
12
|
+
date: 2022-06-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|