queue_classic_plus 4.0.0.alpha19 → 4.0.0.alpha21
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/queue_classic_plus/version.rb +1 -1
- data/lib/queue_classic_plus/worker.rb +27 -12
- data/spec/worker_spec.rb +42 -0
- 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: d61507724f9d6b55e0cb83626e9cebd28e41d30f950c6fb30d16d38b762ff411
|
4
|
+
data.tar.gz: 4661d1689861baf7658ee403bba56551a0a8830932c604a550b07e3f2c8e5e57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5044392ec3912a4e5d967ca8c5418bedad08f75176c53ade15d88f256d8658ca33570530cb3158de659d0b3fe517f13e6a68dce012a7ad569a2d99b7ce6fd9f
|
7
|
+
data.tar.gz: 41200b7ae13c0405c340ba1882e1ae064895734572ee6421a3adf1b6f5b3bc53ec2b5e2afda603312b4e8c7c9af05ccbd0e862f2a09d683ead29e47214ea2829
|
@@ -24,17 +24,22 @@ module QueueClassicPlus
|
|
24
24
|
force_retry = true
|
25
25
|
end
|
26
26
|
|
27
|
+
@failed_job_class_memoized = false
|
27
28
|
@failed_job = job
|
28
29
|
@raw_args = job[:args]
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
30
|
+
|
31
|
+
if queue_classic_plus_job?
|
32
|
+
@failed_job_args = failed_job_class.deserialized(@raw_args)
|
33
|
+
|
34
|
+
if force_retry && !failed_job_class.disable_retries
|
35
|
+
Metrics.increment("qc.force_retry", source: @q_name)
|
36
|
+
retry_with_remaining(e)
|
37
|
+
elsif failed_job_class.retries_on?(e)
|
38
|
+
Metrics.increment("qc.retry", source: @q_name)
|
39
|
+
retry_with_remaining(e)
|
40
|
+
else
|
41
|
+
enqueue_failed(e)
|
42
|
+
end
|
38
43
|
else
|
39
44
|
enqueue_failed(e)
|
40
45
|
end
|
@@ -60,10 +65,20 @@ module QueueClassicPlus
|
|
60
65
|
(@failed_job[:remaining_retries] || max_retries).to_i
|
61
66
|
end
|
62
67
|
|
68
|
+
def queue_classic_plus_job?
|
69
|
+
failed_job_class && failed_job_class < Base
|
70
|
+
end
|
71
|
+
|
63
72
|
def failed_job_class
|
64
|
-
|
65
|
-
|
66
|
-
|
73
|
+
return @failed_job_class if @failed_job_class_memoized
|
74
|
+
|
75
|
+
@failed_job_class_memoized = true
|
76
|
+
@failed_job_class =
|
77
|
+
begin
|
78
|
+
Object.const_get(@failed_job[:method].split('.')[0])
|
79
|
+
rescue NameError
|
80
|
+
nil
|
81
|
+
end
|
67
82
|
end
|
68
83
|
|
69
84
|
def backoff
|
data/spec/worker_spec.rb
CHANGED
@@ -45,6 +45,48 @@ describe QueueClassicPlus::CustomWorker do
|
|
45
45
|
expect(job).to_not be_nil
|
46
46
|
expect(job['last_error']).to_not be_nil
|
47
47
|
end
|
48
|
+
|
49
|
+
context 'for a non-QueueClassicPlus job' do
|
50
|
+
let(:job_type) do
|
51
|
+
Class.new(ActiveJob::Base) do
|
52
|
+
def self.name
|
53
|
+
"NonQcJob"
|
54
|
+
end
|
55
|
+
|
56
|
+
self.queue_adapter = :queue_classic
|
57
|
+
|
58
|
+
queue_as :test
|
59
|
+
|
60
|
+
def perform(boom)
|
61
|
+
raise boom.to_s
|
62
|
+
end
|
63
|
+
end.tap { Object.const_set(:NonQcJob, _1) }
|
64
|
+
end
|
65
|
+
let(:queue) { QC::Queue.new("test") }
|
66
|
+
|
67
|
+
it 'properly enqueues for jobs in the failed queue' do
|
68
|
+
non_qc_job = job_type.new(:boom).enqueue
|
69
|
+
job_id = non_qc_job.provider_job_id
|
70
|
+
|
71
|
+
expect(failed_queue.count).to eq(0)
|
72
|
+
job = find_job(job_id)
|
73
|
+
expect(job).to_not be_nil
|
74
|
+
expect(find_job(job_id.succ)).to be_nil
|
75
|
+
args = JSON.load(job['args']).first
|
76
|
+
expect(args['arguments']).to eq(QueueClassicPlus::Base.serialized([:boom]))
|
77
|
+
|
78
|
+
worker.work
|
79
|
+
|
80
|
+
expect(failed_queue.count).to eq(1)
|
81
|
+
expect(find_job(job_id)).to be_nil
|
82
|
+
job = find_job(job_id.succ)
|
83
|
+
expect(job).to_not be_nil
|
84
|
+
failed_args = JSON.load(job['args']).first
|
85
|
+
expect(failed_args['arguments']).to eq(QueueClassicPlus::Base.serialized([:boom]))
|
86
|
+
expect(job['last_error']).to_not be_nil
|
87
|
+
expect(job['last_error']).to start_with("boom\n")
|
88
|
+
end
|
89
|
+
end
|
48
90
|
end
|
49
91
|
end
|
50
92
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: queue_classic_plus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.0.
|
4
|
+
version: 4.0.0.alpha21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simon Mathieu
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2023-
|
13
|
+
date: 2023-11-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: queue_classic
|