pesto 0.0.3 → 0.0.4

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pesto.rb +32 -20
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6ac9f2daaff1198c2a41c6dde98dc134c9df78b2
4
- data.tar.gz: 92e4981299db527e5c1f59492cc949d5b8414d8b
3
+ metadata.gz: f58dbabd4f6573cec2ec4cd53c33880017552ea5
4
+ data.tar.gz: 9b9774f545bdfcab49d706c79b4322c08f1e9984
5
5
  SHA512:
6
- metadata.gz: a1b769859610b0c57e0d03b31d33e3409eea0d7f1cb06a414e1bbc2fbb91c3bbbbfc8f39d7d2612faff4132d2812d942a5fbfbf060a3919b809fa16563de2008
7
- data.tar.gz: 6031277038f28c4efd9e3ab7cc6326ca347f1d61fa82d803df791e0bf9607c4162fe9c4eba38723e232ad7c91fc4c95717d11247ad8c505d8c96199bdab9744a
6
+ metadata.gz: 6df4c3859b29887f48632ee005368edff6f41966e175e683a33a418a766a5a0c1bc184647ef621f8e09c49cec27f99052475ca9187f4c5ee98c4f25048aa9081
7
+ data.tar.gz: 0ded05f4440855aee5b09111ec7b403531596af2e629bce462b6e24d9cabeb074515309911ca90a19308f72147aa3332d686bbf3530346dd14f17f281eab5299
data/lib/pesto.rb CHANGED
@@ -12,7 +12,6 @@ module Pesto
12
12
  :timeout_lock => 90,
13
13
  :interval_check => 0.05
14
14
  }.merge(opts)
15
-
16
15
  end
17
16
 
18
17
  def rc
@@ -39,30 +38,37 @@ module Pesto
39
38
  while true
40
39
  locked = 0
41
40
 
42
- res = rc.pipelined do
43
- names.each do |n|
44
- chash = lock_hash(n)
45
- rc.setnx chash, 1
41
+ lock_req = nil
42
+ rc.with do |rc|
43
+ lock_req = rc.pipelined do
44
+ names.each do |n|
45
+ chash = lock_hash(n)
46
+ rc.setnx chash, 1
47
+ end
46
48
  end
47
49
  end
48
50
 
49
51
  locks = []
50
52
 
51
- names.each_with_index do |n, ix|
52
- l = res[ix]
53
- next if !l
54
- locked += 1
55
- locks << n
53
+ if lock_req
54
+ names.each_with_index do |n, ix|
55
+ l = lock_req[ix]
56
+ next if !l
57
+ locked += 1
58
+ locks << n
59
+ end
56
60
  end
57
61
 
58
62
  if locked == names.size
59
63
  locked = 1
60
64
 
61
65
  if @conf[:lock_expire]
62
- res = rc.pipelined do
63
- names.each do |n|
64
- chash = lock_hash(n)
65
- rc.expire chash, opts[:timeout_lock_expire]
66
+ rc.with do |rc|
67
+ rc.pipelined do
68
+ names.each do |n|
69
+ chash = lock_hash(n)
70
+ rc.expire chash, opts[:timeout_lock_expire]
71
+ end
66
72
  end
67
73
  end
68
74
  end
@@ -100,15 +106,21 @@ module Pesto
100
106
  _names = [_names] if _names.is_a?(String)
101
107
  names = _names.uniq
102
108
 
103
- res = rc.pipelined do
104
- names.each do |n|
105
- rc.del(lock_hash(n))
109
+ unlock_req = nil
110
+ rc.with do |rc|
111
+ unlock_req = rc.pipelined do
112
+ names.each do |n|
113
+ rc.del(lock_hash(n))
114
+ end
106
115
  end
107
116
  end
108
-
117
+
109
118
  val = 0
110
- res.each do |v|
111
- val += v
119
+
120
+ if unlock_req
121
+ unlock_req.each do |v|
122
+ val += v
123
+ end
112
124
  end
113
125
 
114
126
  val > 0 ? 1 : 0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pesto
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - bfx devs