refilling_queue 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- refilling_queue (0.0.2)
4
+ refilling_queue (0.0.3)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
@@ -47,8 +47,14 @@ class RefillingQueue
47
47
 
48
48
  def lock
49
49
  lock = "#{@name}_lock"
50
- raise RefillingQueue::Locked unless @client.setnx lock, "1"
51
- @client.expire lock, @options[:lock_timeout]
50
+
51
+ # transaction: prevent infinite lock when process dies immediately after setting lock
52
+ acquired, _ = @client.multi do
53
+ @client.setnx lock, "1"
54
+ @client.expire lock, @options[:lock_timeout]
55
+ end
56
+ raise RefillingQueue::Locked unless acquired
57
+
52
58
  begin
53
59
  yield
54
60
  ensure
@@ -1,3 +1,3 @@
1
1
  class RefillingQueue
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: refilling_queue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -42,7 +42,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
42
42
  version: '0'
43
43
  segments:
44
44
  - 0
45
- hash: 2863148755919563971
45
+ hash: -2533570961055463155
46
46
  required_rubygems_version: !ruby/object:Gem::Requirement
47
47
  none: false
48
48
  requirements:
@@ -51,7 +51,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
51
51
  version: '0'
52
52
  segments:
53
53
  - 0
54
- hash: 2863148755919563971
54
+ hash: -2533570961055463155
55
55
  requirements: []
56
56
  rubyforge_project:
57
57
  rubygems_version: 1.8.24