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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 66d34a270a535f97586c21a6c259d780c7a1ce9f
4
- data.tar.gz: 9ab5f4591d2a99e262cc1ab2501d70e845f710aa
3
+ metadata.gz: a1679744710a2e1d18001de39c1171cf671f1ef8
4
+ data.tar.gz: 0fa6ac27d73a17b22602062250f8048374a3e274
5
5
  SHA512:
6
- metadata.gz: 03b4b70d9ef0e69d46d738fb3b6c1dd987e3e0e46cf3a2724300b50e1fbdcfc9f44d2af1b18b53999a21e74d48e335fe1a689e9885e14e784070ad5384f1fcac
7
- data.tar.gz: 781a313ebd129ad8db24df9822b47bec750879aa2fa1abcc524df00228767c6a50eca03c780b19aee8e576304fcb294fe83f963af8fb75beacf4cb89b3f631fb
6
+ metadata.gz: 585ad0f3aff31ea85fb335b552e873210bb2c9d931e3e4dd8d36165903e89cf188bea91bcce1a6ddea6b6189de13287d5e867d3b3aa61d9edbfe33b791d4ec92
7
+ data.tar.gz: bae8d6b35f22d5878c1acda5ae1e48f9d406a4637ed0d9ea29fd39c1f49f894ddca41a2c05fda9d3fbc26a9f29ef9a31e9bb33dd55e1db7150d004a21b530389
data/HISTORY.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## HEAD
2
2
 
3
+ ## 1.3.1 (2014-08-13)
4
+
5
+ * Fixed: Job would infinitely retry if DirtyExit exception was always raised.
6
+
3
7
  ## 1.3.0 (2014-07-25)
4
8
 
5
9
  * Adjust gem dependency on `resque-scheduler` to ~> 3.0
@@ -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 @on_failure_retry_hook_already_called
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)
@@ -1,3 +1,3 @@
1
1
  module ResqueRetry
2
- VERSION = '1.3.0'
2
+ VERSION = '1.3.1'
3
3
  end
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.0
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-07-25 00:00:00.000000000 Z
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.2.0
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