oni 4.2.3 → 4.3.0

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/oni/daemon.rb +25 -20
  3. data/lib/oni/version.rb +1 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 430375f85e0f8d617f53487863c6a4752680fd1d8b5a67cc78529d757e5b5389
4
- data.tar.gz: c26f8f5b3457c28145c3e689b6490026dd073b9ea4a5acea06ab9f198d405397
3
+ metadata.gz: 19d78db0264593a2aea45885eed49c3cf655379b730708ffb9d0d3449f0738fe
4
+ data.tar.gz: d4f9a83030eccd4cdfd786605c1c982f997ad037c922301fecf747915434adda
5
5
  SHA512:
6
- metadata.gz: 38ef45f00263093e39de7f38051ad170c48f9578907230d2c1ddd98542bc9c1bc012322e17317e9ceac32ea5d07be8e7ffbabc3f6a62cb9d5f995f6f1ca8449e
7
- data.tar.gz: 6799c07046351f56671e1863677e626021dc724196b94404b42f6dc7e8df64c3784ff77a864f7af7b2f2951ed7432e8dedee1a60a9a7fd4c9308ec14c728a7eb
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
- return run_thread if threads <= 1
60
- return spawn_worker if workers <= 1
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
- threads.each(&:join)
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
- Process.setproctitle "#{$0}: worker #{i}" if i
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
- daemon_workers[Process.pid] = Array.new threads do
195
- spawn_thread
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
- thread = Thread.new { run_thread }
206
-
207
- thread.abort_on_exception = true
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
@@ -1,3 +1,3 @@
1
1
  module Oni
2
- VERSION = '4.2.3'
2
+ VERSION = '4.3.0'
3
3
  end # Oni
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.2.3
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-01 00:00:00.000000000 Z
12
+ date: 2022-06-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake