resque-workers-lock 1.2 → 1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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