faktory_worker_ruby 1.2.0 → 2.0.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/.github/workflows/ci.yml +1 -1
- data/.standard.yml +4 -7
- data/Changes.md +12 -0
- data/Gemfile.lock +57 -31
- data/bin/faktory-worker +3 -3
- data/faktory_worker_ruby.gemspec +2 -2
- data/lib/faktory/batch.rb +4 -0
- data/lib/faktory/client.rb +6 -3
- data/lib/faktory/connection.rb +1 -1
- data/lib/faktory/job.rb +16 -1
- data/lib/faktory/job_logger.rb +1 -1
- data/lib/faktory/logging.rb +1 -1
- data/lib/faktory/processor.rb +3 -2
- data/lib/faktory/rails.rb +3 -3
- data/lib/faktory/testing.rb +3 -3
- data/lib/faktory/util.rb +1 -1
- data/lib/faktory/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fe9fd54ed547e42b198c7cf2e2f056203857f0f16a65aafe7126006102f86b3b
|
|
4
|
+
data.tar.gz: 9ce604181600566d5991a3e9419f8b48a68d1cf657e8731ef5440eeadff5c4e7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a344b74590b7e16f361fe2be34b69f1d7b07934f59cad91bc06b21dbc619638ac001591e3a5f3e91dabd57526ce1a612f3f28217fe8b61e28b3a29da3104cb0b
|
|
7
|
+
data.tar.gz: a23358b7b261355de860f811b33218704e0d1ee760b794dec7977137e3b2996c8badab2bf0d9d420d468ed539c4b07c6b893a7e99c761659187ae081a3343ef4
|
data/.github/workflows/ci.yml
CHANGED
data/.standard.yml
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
ruby_version: 2.
|
|
1
|
+
ruby_version: 2.7.0
|
|
2
2
|
fix: true
|
|
3
3
|
parallel: true
|
|
4
4
|
ignore:
|
|
5
|
-
- test/**/*
|
|
6
|
-
- examples/**/*
|
|
7
|
-
- myapp/**/*
|
|
8
|
-
- 'lib/faktory.rb':
|
|
9
|
-
- Lint/InheritException
|
|
10
5
|
- 'lib/**/*':
|
|
11
|
-
-
|
|
6
|
+
- Style/GlobalVars
|
|
7
|
+
- 'test/**/*':
|
|
8
|
+
- Lint/ConstantDefinitionInBlock
|
|
12
9
|
- Style/GlobalVars
|
data/Changes.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changes
|
|
2
2
|
|
|
3
|
+
## HEAD
|
|
4
|
+
|
|
5
|
+
- Allow more connections in pool [#455]
|
|
6
|
+
- Minimum Ruby version is now 2.7.
|
|
7
|
+
- Minimum Rails version is now 6.0.
|
|
8
|
+
|
|
9
|
+
## 1.3.0
|
|
10
|
+
|
|
11
|
+
- Fix `faktory/testing` [#74]
|
|
12
|
+
- Provide more batch helper methods along with a more complex
|
|
13
|
+
workflow in `examples/complex_workflow.rb`.
|
|
14
|
+
|
|
3
15
|
## 1.2.0
|
|
4
16
|
|
|
5
17
|
- Dup options before deep merging [#67]
|
data/Gemfile.lock
CHANGED
|
@@ -1,69 +1,92 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
faktory_worker_ruby (
|
|
4
|
+
faktory_worker_ruby (2.0.0)
|
|
5
5
|
connection_pool (~> 2.2, >= 2.2.2)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
8
8
|
remote: https://rubygems.org/
|
|
9
9
|
specs:
|
|
10
|
-
activejob (7.
|
|
11
|
-
activesupport (= 7.
|
|
10
|
+
activejob (7.1.3)
|
|
11
|
+
activesupport (= 7.1.3)
|
|
12
12
|
globalid (>= 0.3.6)
|
|
13
|
-
activesupport (7.
|
|
13
|
+
activesupport (7.1.3)
|
|
14
|
+
base64
|
|
15
|
+
bigdecimal
|
|
14
16
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
17
|
+
connection_pool (>= 2.2.5)
|
|
18
|
+
drb
|
|
15
19
|
i18n (>= 1.6, < 2)
|
|
16
20
|
minitest (>= 5.1)
|
|
21
|
+
mutex_m
|
|
17
22
|
tzinfo (~> 2.0)
|
|
18
23
|
ast (2.4.2)
|
|
19
|
-
|
|
20
|
-
|
|
24
|
+
base64 (0.2.0)
|
|
25
|
+
bigdecimal (3.1.6)
|
|
26
|
+
concurrent-ruby (1.2.3)
|
|
27
|
+
connection_pool (2.4.1)
|
|
21
28
|
docile (1.4.0)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
drb (2.2.0)
|
|
30
|
+
ruby2_keywords
|
|
31
|
+
globalid (1.2.1)
|
|
32
|
+
activesupport (>= 6.1)
|
|
33
|
+
i18n (1.14.1)
|
|
25
34
|
concurrent-ruby (~> 1.0)
|
|
26
|
-
json (2.
|
|
35
|
+
json (2.7.1)
|
|
27
36
|
language_server-protocol (3.17.0.3)
|
|
28
|
-
|
|
29
|
-
minitest
|
|
37
|
+
lint_roller (1.1.0)
|
|
38
|
+
minitest (5.21.2)
|
|
39
|
+
minitest-hooks (1.5.1)
|
|
30
40
|
minitest (> 5.3)
|
|
31
|
-
|
|
32
|
-
|
|
41
|
+
mutex_m (0.2.0)
|
|
42
|
+
parallel (1.24.0)
|
|
43
|
+
parser (3.3.0.4)
|
|
33
44
|
ast (~> 2.4.1)
|
|
45
|
+
racc
|
|
46
|
+
racc (1.7.3)
|
|
34
47
|
rainbow (3.1.1)
|
|
35
|
-
rake (13.0
|
|
36
|
-
regexp_parser (2.
|
|
37
|
-
rexml (3.2.
|
|
38
|
-
rubocop (1.
|
|
48
|
+
rake (13.1.0)
|
|
49
|
+
regexp_parser (2.9.0)
|
|
50
|
+
rexml (3.2.6)
|
|
51
|
+
rubocop (1.59.0)
|
|
39
52
|
json (~> 2.3)
|
|
53
|
+
language_server-protocol (>= 3.17.0)
|
|
40
54
|
parallel (~> 1.10)
|
|
41
|
-
parser (>= 3.
|
|
55
|
+
parser (>= 3.2.2.4)
|
|
42
56
|
rainbow (>= 2.2.2, < 4.0)
|
|
43
57
|
regexp_parser (>= 1.8, < 3.0)
|
|
44
58
|
rexml (>= 3.2.5, < 4.0)
|
|
45
|
-
rubocop-ast (>= 1.
|
|
59
|
+
rubocop-ast (>= 1.30.0, < 2.0)
|
|
46
60
|
ruby-progressbar (~> 1.7)
|
|
47
|
-
unicode-display_width (>=
|
|
48
|
-
rubocop-ast (1.
|
|
49
|
-
parser (>= 3.
|
|
50
|
-
rubocop-performance (1.
|
|
51
|
-
rubocop (>= 1.
|
|
52
|
-
rubocop-ast (>=
|
|
53
|
-
ruby-progressbar (1.
|
|
61
|
+
unicode-display_width (>= 2.4.0, < 3.0)
|
|
62
|
+
rubocop-ast (1.30.0)
|
|
63
|
+
parser (>= 3.2.1.0)
|
|
64
|
+
rubocop-performance (1.20.2)
|
|
65
|
+
rubocop (>= 1.48.1, < 2.0)
|
|
66
|
+
rubocop-ast (>= 1.30.0, < 2.0)
|
|
67
|
+
ruby-progressbar (1.13.0)
|
|
68
|
+
ruby2_keywords (0.0.5)
|
|
54
69
|
simplecov (0.22.0)
|
|
55
70
|
docile (~> 1.1)
|
|
56
71
|
simplecov-html (~> 0.11)
|
|
57
72
|
simplecov_json_formatter (~> 0.1)
|
|
58
73
|
simplecov-html (0.12.3)
|
|
59
74
|
simplecov_json_formatter (0.1.4)
|
|
60
|
-
standard (1.
|
|
75
|
+
standard (1.33.0)
|
|
61
76
|
language_server-protocol (~> 3.17.0.2)
|
|
62
|
-
|
|
63
|
-
rubocop
|
|
77
|
+
lint_roller (~> 1.0)
|
|
78
|
+
rubocop (~> 1.59.0)
|
|
79
|
+
standard-custom (~> 1.0.0)
|
|
80
|
+
standard-performance (~> 1.3)
|
|
81
|
+
standard-custom (1.0.2)
|
|
82
|
+
lint_roller (~> 1.0)
|
|
83
|
+
rubocop (~> 1.50)
|
|
84
|
+
standard-performance (1.3.1)
|
|
85
|
+
lint_roller (~> 1.1)
|
|
86
|
+
rubocop-performance (~> 1.20.2)
|
|
64
87
|
tzinfo (2.0.6)
|
|
65
88
|
concurrent-ruby (~> 1.0)
|
|
66
|
-
unicode-display_width (2.
|
|
89
|
+
unicode-display_width (2.5.0)
|
|
67
90
|
|
|
68
91
|
PLATFORMS
|
|
69
92
|
ruby
|
|
@@ -76,3 +99,6 @@ DEPENDENCIES
|
|
|
76
99
|
rake
|
|
77
100
|
simplecov
|
|
78
101
|
standard
|
|
102
|
+
|
|
103
|
+
BUNDLED WITH
|
|
104
|
+
2.4.22
|
data/bin/faktory-worker
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# RUBYOPT=-w bundle exec faktory
|
|
5
5
|
$TESTING = false
|
|
6
6
|
|
|
7
|
-
require_relative
|
|
7
|
+
require_relative "../lib/faktory/cli"
|
|
8
8
|
|
|
9
9
|
begin
|
|
10
10
|
cli = Faktory::CLI.instance
|
|
@@ -12,7 +12,7 @@ begin
|
|
|
12
12
|
cli.run
|
|
13
13
|
rescue => e
|
|
14
14
|
raise e if $DEBUG
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
warn e.message
|
|
16
|
+
warn e.backtrace.join("\n")
|
|
17
17
|
exit 1
|
|
18
18
|
end
|
data/faktory_worker_ruby.gemspec
CHANGED
|
@@ -12,7 +12,7 @@ Gem::Specification.new do |gem|
|
|
|
12
12
|
gem.executables = ["faktory-worker"]
|
|
13
13
|
gem.files = `git ls-files | grep -Ev '^(test|myapp|examples)'`.split("\n")
|
|
14
14
|
gem.version = Faktory::VERSION
|
|
15
|
-
gem.required_ruby_version = ">= 2.
|
|
15
|
+
gem.required_ruby_version = ">= 2.7.0"
|
|
16
16
|
|
|
17
17
|
gem.metadata = {
|
|
18
18
|
"homepage_uri" => "https://contribsys.com/faktory",
|
|
@@ -23,7 +23,7 @@ Gem::Specification.new do |gem|
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
gem.add_dependency "connection_pool", "~> 2.2", ">= 2.2.2"
|
|
26
|
-
gem.add_development_dependency "activejob", ">=
|
|
26
|
+
gem.add_development_dependency "activejob", ">= 6.0.0"
|
|
27
27
|
gem.add_development_dependency "minitest", "~> 5"
|
|
28
28
|
gem.add_development_dependency "minitest-hooks"
|
|
29
29
|
gem.add_development_dependency "rake"
|
data/lib/faktory/batch.rb
CHANGED
data/lib/faktory/client.rb
CHANGED
|
@@ -163,7 +163,9 @@ module Faktory
|
|
|
163
163
|
# Hash must contain "jid", "jobtype" and "args" elements at minimum.
|
|
164
164
|
# Returned value will either be the JID String if successful OR
|
|
165
165
|
# a symbol corresponding to an error.
|
|
166
|
+
# NB: aliased by faktory/testing
|
|
166
167
|
def push(job)
|
|
168
|
+
job = job.transform_keys(&:to_s)
|
|
167
169
|
job["jid"] ||= SecureRandom.hex(12)
|
|
168
170
|
job["queue"] ||= "default"
|
|
169
171
|
raise ArgumentError, "Missing `jobtype` attribute: #{job.inspect}" unless job["jobtype"]
|
|
@@ -246,6 +248,7 @@ module Faktory
|
|
|
246
248
|
@location.scheme =~ /tls/
|
|
247
249
|
end
|
|
248
250
|
|
|
251
|
+
# NB: aliased by faktory/testing
|
|
249
252
|
def open_socket(timeout = DEFAULT_TIMEOUT)
|
|
250
253
|
if tls?
|
|
251
254
|
require "openssl"
|
|
@@ -344,9 +347,9 @@ module Faktory
|
|
|
344
347
|
raise Errno::ECONNRESET, "No response" unless line
|
|
345
348
|
chr = line[0]
|
|
346
349
|
if chr == "+"
|
|
347
|
-
line[1
|
|
350
|
+
line[1..].strip
|
|
348
351
|
elsif chr == "$"
|
|
349
|
-
count = line[1
|
|
352
|
+
count = line[1..].strip.to_i
|
|
350
353
|
return nil if count == -1
|
|
351
354
|
data = read(count) if count > 0
|
|
352
355
|
_ = gets # read extra linefeeds
|
|
@@ -359,7 +362,7 @@ module Faktory
|
|
|
359
362
|
#
|
|
360
363
|
# -NOTUNIQUE Job not unique
|
|
361
364
|
# We return ["NOTUNIQUE", "Job not unique"]
|
|
362
|
-
err = line[1
|
|
365
|
+
err = line[1..].split(" ", 2)
|
|
363
366
|
raise CommandError, err[1] if err[0] == "ERR"
|
|
364
367
|
err
|
|
365
368
|
else
|
data/lib/faktory/connection.rb
CHANGED
|
@@ -6,7 +6,7 @@ module Faktory
|
|
|
6
6
|
class Connection
|
|
7
7
|
class << self
|
|
8
8
|
def create(options = {})
|
|
9
|
-
size = Faktory.worker? ? (Faktory.options[:concurrency] +
|
|
9
|
+
size = Faktory.worker? ? (Faktory.options[:concurrency] + 5) : 20
|
|
10
10
|
ConnectionPool.new(timeout: options[:pool_timeout] || 1, size: size) do
|
|
11
11
|
Faktory::Client.new(**options)
|
|
12
12
|
end
|
data/lib/faktory/job.rb
CHANGED
|
@@ -23,6 +23,7 @@ module Faktory
|
|
|
23
23
|
module Job
|
|
24
24
|
attr_accessor :jid
|
|
25
25
|
attr_accessor :bid
|
|
26
|
+
attr_accessor :_custom
|
|
26
27
|
|
|
27
28
|
include Faktory::Trackable
|
|
28
29
|
|
|
@@ -37,12 +38,26 @@ module Faktory
|
|
|
37
38
|
Setter.new(options)
|
|
38
39
|
end
|
|
39
40
|
|
|
41
|
+
# this method is typically called within a batch job to reopen
|
|
42
|
+
# the batch in order to add more jobs.
|
|
40
43
|
def batch
|
|
41
44
|
if bid
|
|
42
45
|
@batch ||= Faktory::Batch.new(bid)
|
|
43
46
|
end
|
|
44
47
|
end
|
|
45
48
|
|
|
49
|
+
# this method is typically called within a child batch callback to reopen
|
|
50
|
+
# the parent batch in order to add more jobs or workflow steps.
|
|
51
|
+
def parent_batch
|
|
52
|
+
if parent_bid
|
|
53
|
+
@parent_batch ||= Faktory::Batch.new(parent_bid)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def parent_bid
|
|
58
|
+
_custom["_pbid"]
|
|
59
|
+
end
|
|
60
|
+
|
|
46
61
|
def logger
|
|
47
62
|
Faktory.logger
|
|
48
63
|
end
|
|
@@ -158,7 +173,7 @@ module Faktory
|
|
|
158
173
|
m = "#{name}="
|
|
159
174
|
undef_method(m) if method_defined?(m) || private_method_defined?(m)
|
|
160
175
|
end
|
|
161
|
-
define_singleton_method("#{name}=") do |val|
|
|
176
|
+
define_singleton_method(:"#{name}=") do |val|
|
|
162
177
|
singleton_class.class_eval do
|
|
163
178
|
undef_method(name) if method_defined?(name) || private_method_defined?(name)
|
|
164
179
|
define_method(name) { val }
|
data/lib/faktory/job_logger.rb
CHANGED
data/lib/faktory/logging.rb
CHANGED
data/lib/faktory/processor.rb
CHANGED
|
@@ -73,7 +73,7 @@ module Faktory
|
|
|
73
73
|
@mgr.processor_stopped(self)
|
|
74
74
|
rescue Faktory::Shutdown
|
|
75
75
|
@mgr.processor_stopped(self)
|
|
76
|
-
rescue Exception => ex
|
|
76
|
+
rescue Exception => ex # rubocop:disable Lint/RescueException
|
|
77
77
|
@mgr.processor_died(self, ex)
|
|
78
78
|
end
|
|
79
79
|
|
|
@@ -131,6 +131,7 @@ module Faktory
|
|
|
131
131
|
klass = constantize(payload["jobtype"])
|
|
132
132
|
jobinst = klass.new
|
|
133
133
|
jobinst.jid = payload["jid"]
|
|
134
|
+
jobinst._custom = payload["custom"]
|
|
134
135
|
yield jobinst
|
|
135
136
|
end
|
|
136
137
|
end
|
|
@@ -151,7 +152,7 @@ module Faktory
|
|
|
151
152
|
# the timeout. Fail it so we can release any locks server-side
|
|
152
153
|
# and immediately restart it.
|
|
153
154
|
work.fail(shut)
|
|
154
|
-
rescue Exception => ex
|
|
155
|
+
rescue Exception => ex # rubocop:disable Lint/RescueException
|
|
155
156
|
handle_exception(ex, {context: "Job raised exception", job: work.job})
|
|
156
157
|
work.fail(ex)
|
|
157
158
|
raise ex
|
data/lib/faktory/rails.rb
CHANGED
|
@@ -22,7 +22,7 @@ module Faktory
|
|
|
22
22
|
# None of this matters on the client-side, only within the Faktory executor itself.
|
|
23
23
|
#
|
|
24
24
|
Faktory.configure_worker do |_|
|
|
25
|
-
if ::Rails::VERSION::MAJOR <
|
|
25
|
+
if ::Rails::VERSION::MAJOR < 6
|
|
26
26
|
raise "Your current version of Rails, #{::Rails::VERSION::STRING}, is not supported"
|
|
27
27
|
end
|
|
28
28
|
|
|
@@ -58,9 +58,9 @@ module Faktory
|
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
|
|
61
|
-
if defined?(::Rails) && ::Rails::VERSION::MAJOR <
|
|
61
|
+
if defined?(::Rails) && ::Rails::VERSION::MAJOR < 6
|
|
62
62
|
warn("**************************************************")
|
|
63
|
-
warn("🚫 ERROR: Faktory Worker does not support Rails
|
|
63
|
+
warn("🚫 ERROR: Faktory Worker does not support Rails version < 6.x")
|
|
64
64
|
warn("**************************************************")
|
|
65
65
|
warn("")
|
|
66
66
|
end
|
data/lib/faktory/testing.rb
CHANGED
|
@@ -76,7 +76,7 @@ module Faktory
|
|
|
76
76
|
|
|
77
77
|
class Client
|
|
78
78
|
alias_method :real_push, :push
|
|
79
|
-
alias_method :
|
|
79
|
+
alias_method :real_open_socket, :open_socket
|
|
80
80
|
|
|
81
81
|
def push(job)
|
|
82
82
|
if Faktory::Testing.inline?
|
|
@@ -94,9 +94,9 @@ module Faktory
|
|
|
94
94
|
end
|
|
95
95
|
end
|
|
96
96
|
|
|
97
|
-
def
|
|
97
|
+
def open_socket(*args)
|
|
98
98
|
unless Faktory::Testing.enabled?
|
|
99
|
-
|
|
99
|
+
real_open_socket(*args)
|
|
100
100
|
end
|
|
101
101
|
end
|
|
102
102
|
end
|
data/lib/faktory/util.rb
CHANGED
data/lib/faktory/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: faktory_worker_ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mike Perham
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2024-01-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: connection_pool
|
|
@@ -36,14 +36,14 @@ dependencies:
|
|
|
36
36
|
requirements:
|
|
37
37
|
- - ">="
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version:
|
|
39
|
+
version: 6.0.0
|
|
40
40
|
type: :development
|
|
41
41
|
prerelease: false
|
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
|
43
43
|
requirements:
|
|
44
44
|
- - ">="
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
|
-
version:
|
|
46
|
+
version: 6.0.0
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: minitest
|
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -147,14 +147,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
147
147
|
requirements:
|
|
148
148
|
- - ">="
|
|
149
149
|
- !ruby/object:Gem::Version
|
|
150
|
-
version: 2.
|
|
150
|
+
version: 2.7.0
|
|
151
151
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
152
152
|
requirements:
|
|
153
153
|
- - ">="
|
|
154
154
|
- !ruby/object:Gem::Version
|
|
155
155
|
version: '0'
|
|
156
156
|
requirements: []
|
|
157
|
-
rubygems_version: 3.4.
|
|
157
|
+
rubygems_version: 3.4.20
|
|
158
158
|
signing_key:
|
|
159
159
|
specification_version: 4
|
|
160
160
|
summary: Ruby worker for Faktory
|