resque-retry 1.3.0 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HISTORY.md +4 -0
- data/lib/resque/plugins/retry.rb +6 -2
- data/lib/resque-retry/version.rb +1 -1
- data/test/retry_test.rb +18 -0
- data/test/test_jobs.rb +9 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a1679744710a2e1d18001de39c1171cf671f1ef8
|
4
|
+
data.tar.gz: 0fa6ac27d73a17b22602062250f8048374a3e274
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 585ad0f3aff31ea85fb335b552e873210bb2c9d931e3e4dd8d36165903e89cf188bea91bcce1a6ddea6b6189de13287d5e867d3b3aa61d9edbfe33b791d4ec92
|
7
|
+
data.tar.gz: bae8d6b35f22d5878c1acda5ae1e48f9d406a4637ed0d9ea29fd39c1f49f894ddca41a2c05fda9d3fbc26a9f29ef9a31e9bb33dd55e1db7150d004a21b530389
|
data/HISTORY.md
CHANGED
data/lib/resque/plugins/retry.rb
CHANGED
@@ -410,9 +410,13 @@ module Resque
|
|
410
410
|
# @api private
|
411
411
|
def on_failure_retry(exception, *args)
|
412
412
|
log_message 'on_failure_retry', args, exception
|
413
|
-
if
|
413
|
+
if exception.is_a?(Resque::DirtyExit)
|
414
|
+
# This hook is called from a worker processes, not the job process
|
415
|
+
# that failed with a DirtyExit, so @retry_attempt wasn't set yet
|
416
|
+
@retry_attempt = Resque.redis.get(redis_retry_key(*args)).to_i
|
417
|
+
elsif @on_failure_retry_hook_already_called
|
414
418
|
log_message 'on_failure_retry_hook_already_called', args, exception
|
415
|
-
return
|
419
|
+
return
|
416
420
|
end
|
417
421
|
|
418
422
|
if retry_criteria_valid?(exception, *args)
|
data/lib/resque-retry/version.rb
CHANGED
data/test/retry_test.rb
CHANGED
@@ -312,4 +312,22 @@ class RetryTest < MiniTest::Unit::TestCase
|
|
312
312
|
perform_next_job(@worker)
|
313
313
|
end
|
314
314
|
end
|
315
|
+
|
316
|
+
if Process.respond_to?(:fork) && Gem::Version.new(Resque::VERSION) >= Gem::Version.new('1.20.0')
|
317
|
+
def test_retry_on_dirty_exit
|
318
|
+
Resque.enqueue(RetryKilledJob)
|
319
|
+
RetryKilledJob.expects(:clean_retry_key).once
|
320
|
+
2.times do
|
321
|
+
job = @worker.reserve
|
322
|
+
child = fork do
|
323
|
+
Resque.redis.client.reconnect
|
324
|
+
job.perform
|
325
|
+
end
|
326
|
+
Process.waitpid(child)
|
327
|
+
job.fail(Resque::DirtyExit.new)
|
328
|
+
end
|
329
|
+
|
330
|
+
assert_equal nil, @worker.reserve
|
331
|
+
end
|
332
|
+
end
|
315
333
|
end
|
data/test/test_jobs.rb
CHANGED
@@ -503,3 +503,12 @@ class FailsDuringConnectJob < RetryDefaultsJob
|
|
503
503
|
@retry_limit = 3
|
504
504
|
@retry_delay = 10
|
505
505
|
end
|
506
|
+
|
507
|
+
class RetryKilledJob
|
508
|
+
extend Resque::Plugins::Retry
|
509
|
+
@queue = :testing
|
510
|
+
|
511
|
+
def self.perform(*args)
|
512
|
+
Process.kill("KILL", Process.pid)
|
513
|
+
end
|
514
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque-retry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luke Antins
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-
|
13
|
+
date: 2014-08-13 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: resque
|
@@ -213,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
213
213
|
version: '0'
|
214
214
|
requirements: []
|
215
215
|
rubyforge_project:
|
216
|
-
rubygems_version: 2.
|
216
|
+
rubygems_version: 2.4.1
|
217
217
|
signing_key:
|
218
218
|
specification_version: 4
|
219
219
|
summary: A resque plugin; provides retry, delay and exponential backoff support for
|