refilling_queue 0.0.2 → 0.0.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.
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