resque-workers-lock 1.2 → 1.3

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.
@@ -14,12 +14,20 @@ module Resque
14
14
 
15
15
  # Override in your job to control the queue lock key
16
16
  def lock_enqueue(*args)
17
- "enqueuelock:#{name}-#{args.to_s}"
17
+ "#{name}-#{args.to_s}"
18
+ end
19
+
20
+ def get_lock_enqueue(*args)
21
+ "enqueuelock:"+lock_enqueue(*args).to_s
18
22
  end
19
23
 
20
24
  # Override in your job to control the workers lock key.
21
25
  def lock_workers(*args)
22
- "workerslock:#{name}-#{args.to_s}"
26
+ "#{name}-#{args.to_s}"
27
+ end
28
+
29
+ def get_lock_workers(*args)
30
+ "workerslock:"+lock_workers(*args).to_s
23
31
  end
24
32
 
25
33
  # Override in your job to change the perform requeue delay
@@ -34,7 +42,7 @@ module Resque
34
42
  if lock_enqueue(*args) == false
35
43
  return true
36
44
  else
37
- return Resque.redis.setnx(lock_enqueue(*args).to_s, true)
45
+ return Resque.redis.setnx(get_lock_enqueue(*args), true)
38
46
  end
39
47
  end
40
48
 
@@ -42,10 +50,10 @@ module Resque
42
50
  # If it raises Resque::Job::DontPerform, the job is aborted.
43
51
  def before_perform_lock(*args)
44
52
  if lock_workers(*args)
45
- nx = Resque.redis.setnx(lock_workers(*args).to_s, true)
53
+ nx = Resque.redis.setnx(get_lock_workers(*args), true)
46
54
  if nx == false
47
55
  sleep(requeue_perform_delay)
48
- Resque.redis.del(lock_enqueue(*args).to_s)
56
+ Resque.redis.del(get_lock_enqueue(*args))
49
57
  Resque.enqueue(self, *args)
50
58
  raise Resque::Job::DontPerform
51
59
  end
@@ -54,7 +62,7 @@ module Resque
54
62
 
55
63
  def after_dequeue_lock(*args)
56
64
  # Clear the lock when dequeueed
57
- Resque.redis.del(lock_enqueue(*args).to_s)
65
+ Resque.redis.del(get_lock_enqueue(*args))
58
66
  end
59
67
 
60
68
  def around_perform_lock(*args)
@@ -62,15 +70,15 @@ module Resque
62
70
  yield
63
71
  ensure
64
72
  # Clear the lock. (even with errors)
65
- Resque.redis.del(lock_workers(*args).to_s)
66
- Resque.redis.del(lock_enqueue(*args).to_s)
73
+ Resque.redis.del(get_lock_workers(*args))
74
+ Resque.redis.del(get_lock_enqueue(*args))
67
75
  end
68
76
  end
69
77
 
70
78
  def on_failure_lock(exception, *args)
71
79
  # Clear the lock on DirtyExit
72
- Resque.redis.del(lock_workers(*args).to_s)
73
- Resque.redis.del(lock_enqueue(*args).to_s)
80
+ Resque.redis.del(get_lock_workers(*args))
81
+ Resque.redis.del(get_lock_enqueue(*args))
74
82
  end
75
83
 
76
84
  end
data/test/lock_test.rb CHANGED
@@ -18,12 +18,12 @@ class LockTest < Test::Unit::TestCase
18
18
  extend Resque::Plugins::Workers::Lock
19
19
  @queue = :lock_test
20
20
 
21
- #def self.lock_enqueue(id)
22
- # return id.to_s
23
- #end
21
+ def self.lock_enqueue(id)
22
+ return id.to_s+"e"
23
+ end
24
24
 
25
25
  def self.lock_workers(id)
26
- return id.to_s
26
+ return id.to_s+"w"
27
27
  end
28
28
 
29
29
  def self.perform(id)
@@ -53,14 +53,14 @@ class LockTest < Test::Unit::TestCase
53
53
  def test_enqueue
54
54
  3.times { Resque.enqueue(SimilarJob) }
55
55
 
56
- assert_equal "workerslock:LockTest::SimilarJob-[]", SimilarJob.lock_workers
57
- assert_equal "enqueuelock:LockTest::SimilarJob-[]", SimilarJob.lock_enqueue
56
+ assert_equal "LockTest::SimilarJob-[]", SimilarJob.lock_workers
57
+ assert_equal "LockTest::SimilarJob-[]", SimilarJob.lock_enqueue
58
58
  assert_equal 1, Resque.redis.llen('queue:lock_test')
59
59
 
60
60
  3.times do |i|
61
- Resque.enqueue(UniqueJob, (i+100).to_s)
62
- #assert_equal i.to_s, UniqueJob.lock_enqueue(i.to_s)
63
- assert_equal i.to_s, UniqueJob.lock_workers(i.to_s)
61
+ Resque.enqueue(UniqueJob, i+100)
62
+ assert_equal i.to_s+"e", UniqueJob.lock_enqueue(i)
63
+ assert_equal i.to_s+"w", UniqueJob.lock_workers(i)
64
64
  end
65
65
 
66
66
  assert_equal 4, Resque.redis.llen('queue:lock_test')
@@ -73,13 +73,11 @@ class LockTest < Test::Unit::TestCase
73
73
  end
74
74
 
75
75
  def test_zcleanup
76
- Resque.redis.del(SimilarJob.lock_workers)
77
- Resque.redis.del(SimilarJob.lock_enqueue)
76
+ Resque.remove_queue(:lock_test)
77
+
78
+ Resque.redis.keys('enqueuelock:*').collect { |x| Resque.redis.del(x) }.count
79
+ Resque.redis.keys('workerslock:*').collect { |x| Resque.redis.del(x) }.count
78
80
 
79
- 3.times do |i|
80
- Resque.redis.del(UniqueJob.lock_enqueue((i+100).to_s))
81
- end
82
- Resque.redis.del('queue:lock_test')
83
81
  assert_equal 0, Resque.redis.llen('queue:lock_test')
84
82
  end
85
83
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resque-workers-lock
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.2'
4
+ version: '1.3'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-27 00:00:00.000000000 Z
12
+ date: 2012-08-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: resque