sidekiq-pool 1.5.4 → 1.6.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.
- checksums.yaml +4 -4
- data/bin/sidekiq-pool +0 -2
- data/lib/sidekiq/pool/cli.rb +50 -12
- data/lib/sidekiq/pool/version.rb +1 -1
- data/sidekiq-pool.gemspec +2 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aae2717b1470d3fe230ee71d92ed00e2c8a657ab
|
4
|
+
data.tar.gz: 28320e8f8244f32866a8e8791f36f16e896cc0d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21a5f70aa506b01a412796dd17ca62891cc152f07474eb8e44b649e0a5d9f8e476bca86831b3dfc280b183628c26e23e668d77c3c5f3d39e1248154497699b26
|
7
|
+
data.tar.gz: c7d6a1d24110e31198e465b51524e78586b5b05010468c027706baa54da757ce06cb116e412af62da4945e7faa7526e3244b0155f1f95e82818e994eea0a40f6
|
data/bin/sidekiq-pool
CHANGED
data/lib/sidekiq/pool/cli.rb
CHANGED
@@ -4,10 +4,17 @@ require 'sidekiq/pool/version'
|
|
4
4
|
module Sidekiq
|
5
5
|
module Pool
|
6
6
|
class CLI < Sidekiq::CLI
|
7
|
+
|
8
|
+
START_CTX = {
|
9
|
+
:argv => ARGV.map(&:dup),
|
10
|
+
0 => $0.dup,
|
11
|
+
}
|
12
|
+
|
7
13
|
def initialize
|
8
14
|
@child_index = 0
|
9
15
|
@pool = []
|
10
16
|
@done = false
|
17
|
+
@system_booted = false
|
11
18
|
super
|
12
19
|
end
|
13
20
|
|
@@ -41,6 +48,15 @@ module Sidekiq
|
|
41
48
|
|
42
49
|
DEFAULT_FORK_WAIT = 1
|
43
50
|
|
51
|
+
def boot_system
|
52
|
+
if @system_booted
|
53
|
+
logger.info "#{::Process.pid} - environment already started"
|
54
|
+
else
|
55
|
+
super
|
56
|
+
@system_booted = true
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
44
60
|
def working_directory
|
45
61
|
@working_directory || @settings[:working_directory]
|
46
62
|
end
|
@@ -49,6 +65,9 @@ module Sidekiq
|
|
49
65
|
logger.info 'Starting new pool'
|
50
66
|
@settings = parse_config_file(@pool_config)
|
51
67
|
Dir.chdir(working_directory) if working_directory
|
68
|
+
|
69
|
+
boot_system
|
70
|
+
|
52
71
|
@types = @settings[:workers]
|
53
72
|
@types.each do |type|
|
54
73
|
type[:amount].times do
|
@@ -56,6 +75,7 @@ module Sidekiq
|
|
56
75
|
fork_child(type[:command])
|
57
76
|
end
|
58
77
|
end
|
78
|
+
drop_reload_marker
|
59
79
|
end
|
60
80
|
|
61
81
|
def parse_options(argv)
|
@@ -228,25 +248,43 @@ module Sidekiq
|
|
228
248
|
logger.info "Sending #{sig} signal to the pool"
|
229
249
|
signal_to_pool(sig)
|
230
250
|
when 'HUP'
|
231
|
-
|
232
|
-
|
251
|
+
reload
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
def reload
|
256
|
+
logger.info 'Gracefully reloading pool'
|
233
257
|
|
234
|
-
|
235
|
-
|
236
|
-
signal_to_pool('USR1') if @suspend_before_graceful_reload
|
258
|
+
# USR1 tells Sidekiq it will be shutting down in near future.
|
259
|
+
signal_to_pool('USR1') if @suspend_before_graceful_reload
|
237
260
|
|
238
|
-
|
239
|
-
|
261
|
+
add_reload_marker
|
262
|
+
reexec
|
240
263
|
|
241
|
-
|
242
|
-
|
264
|
+
stop_children
|
265
|
+
logger.info 'Graceful reload completed'
|
266
|
+
ensure
|
267
|
+
exit(0)
|
268
|
+
end
|
243
269
|
|
244
|
-
|
245
|
-
|
246
|
-
|
270
|
+
def reexec
|
271
|
+
fork do
|
272
|
+
cmd = [START_CTX[0]].concat(START_CTX[:argv])
|
273
|
+
logger.info("Starting new master process #{cmd}")
|
274
|
+
exec(*cmd)
|
247
275
|
end
|
248
276
|
end
|
249
277
|
|
278
|
+
def add_reload_marker
|
279
|
+
return unless options[:pidfile]
|
280
|
+
File.write([options[:pidfile], '.reload'].join, '')
|
281
|
+
end
|
282
|
+
|
283
|
+
def drop_reload_marker
|
284
|
+
reload_marker = [options[:pidfile], '.reload'].join
|
285
|
+
File.unlink(reload_marker) if File.exist?(reload_marker)
|
286
|
+
end
|
287
|
+
|
250
288
|
def signal_to_pool(sig, given_pool = @pool)
|
251
289
|
given_pool.each { |child| signal_to_child(sig, child[:pid]) }
|
252
290
|
end
|
data/lib/sidekiq/pool/version.rb
CHANGED
data/sidekiq-pool.gemspec
CHANGED
@@ -6,8 +6,8 @@ require 'sidekiq/pool/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = 'sidekiq-pool'
|
8
8
|
spec.version = Sidekiq::Pool::VERSION
|
9
|
-
spec.authors = ['Laurynas Butkus']
|
10
|
-
spec.email = ['laurynas.butkus@gmail.com']
|
9
|
+
spec.authors = ['Laurynas Butkus', 'Raimondas Valickas']
|
10
|
+
spec.email = ['laurynas.butkus@gmail.com', 'raimondas.valickas@gmail.com']
|
11
11
|
|
12
12
|
spec.summary = %q{Forks and manages multiple Sidekiq processes}
|
13
13
|
spec.description = %q{Allows Sidekiq using more CPU cores on Ruby MRI by forking multiple processes.}
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-pool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Laurynas Butkus
|
8
|
+
- Raimondas Valickas
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2018-03-20 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: sidekiq
|
@@ -75,6 +76,7 @@ dependencies:
|
|
75
76
|
description: Allows Sidekiq using more CPU cores on Ruby MRI by forking multiple processes.
|
76
77
|
email:
|
77
78
|
- laurynas.butkus@gmail.com
|
79
|
+
- raimondas.valickas@gmail.com
|
78
80
|
executables:
|
79
81
|
- sidekiq-pool
|
80
82
|
extensions: []
|