resque-retry 1.3.0 → 1.3.1

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 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