gcslock 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1068b280fd4e77bb1270880eaa80aa0145d64f35d58121329e8500ecc2321948
4
- data.tar.gz: 33b5f11756a7c89f55384730322fd43aebcc810dff452c4cbf13bb05f2920aea
3
+ metadata.gz: 1d0120bfbfe6842595ebbdcdb1108937c61ee4e04ea71214ae0027b0ed0e68e1
4
+ data.tar.gz: 6002bf7b00837cf7685400909d550104ced2fc6b99fe22097589c6fde59b6ae7
5
5
  SHA512:
6
- metadata.gz: de5e846755a1c556d263b6af0806b6e102bbd4c474aad7513aa3df8d84d6a8e1afb56b35cc3006e52f76508eac3bc691b5776175142f0e3d1cd9a0fb68ad40fa
7
- data.tar.gz: fc5c9318fcdabb46acff6b89b54c9967ed13749c8cda75cc78699d063f233135a126013874667adc4e300c4975d82ad8da0971f1a972aed23ae01fdf236001b7
6
+ metadata.gz: 3bea490c78bb1e57788500046967379c4f69862e7b49c03eae367547233b811671c0316152ff231d643dbd70378775af3786d292a4d0c7d557fa3b34e53986f2
7
+ data.tar.gz: 9388122c6c3a2c3db1250177f4e75dc040de63cb5d0a9f839533a4bb02d7d2d9a143eec0e415466880267b0ed04a770c1437f012bb6c1aa564b4ce31c0ebca8d
data/gcslock.gemspec CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.required_ruby_version = '>= 2.0'
23
23
 
24
24
  spec.add_runtime_dependency 'google-api-client'
25
- spec.add_runtime_dependency 'google-cloud-storage', '~> 1.26.1'
25
+ spec.add_runtime_dependency 'google-cloud-storage', '>= 1.24.0'
26
26
 
27
27
  spec.add_development_dependency 'rspec'
28
28
  spec.add_development_dependency 'codecov'
data/lib/gcslock/mutex.rb CHANGED
@@ -21,18 +21,21 @@ module GCSLock
21
21
  raise LockAlreadyOwnedError, "Mutex for #{@object.name} is already owned by this process" if owned?
22
22
 
23
23
  backoff = @min_backoff
24
- waited = 0.0 unless timeout.nil?
24
+
25
+ now = Time.now
26
+ end_time = now + timeout unless timeout.nil?
25
27
 
26
28
  loop do
27
29
  return true if try_lock
28
- break if !timeout.nil? && waited + backoff > timeout
30
+ break if !timeout.nil? && now + backoff >= end_time
29
31
  sleep(backoff)
30
32
 
31
33
  backoff_opts = [@max_backoff, backoff * 2]
32
34
 
33
35
  unless timeout.nil?
34
- waited += backoff
35
- backoff_opts.push(timeout - waited) if timeout > waited
36
+ now = Time.now
37
+ diff = end_time - now
38
+ backoff_opts.push(diff) if diff > 0
36
39
  end
37
40
 
38
41
  backoff = backoff_opts.min
@@ -45,6 +48,8 @@ module GCSLock
45
48
  def locked?
46
49
  @object.reload!
47
50
  @object.exists?
51
+ rescue Google::Cloud::NotFoundError
52
+ false
48
53
  end
49
54
 
50
55
  # Returns `true` if this lock is currently held by current thread.
@@ -1,3 +1,3 @@
1
1
  module GCSLock
2
- VERSION = '1.0.0'.freeze
2
+ VERSION = '1.0.1'.freeze
3
3
  end
@@ -83,8 +83,8 @@ describe GCSLock::Mutex do
83
83
 
84
84
  it 'sleeps just the time needed to retry once at the end' do
85
85
  expect(@mutex).to receive(:owned?).once.and_return(false)
86
- expect(@mutex).to receive(:sleep).exactly(2).times
87
- expect(@mutex).to receive(:try_lock).exactly(3).times.and_return(false)
86
+ expect(@mutex).to receive(:sleep).at_least(2).times
87
+ expect(@mutex).to receive(:try_lock).at_least(3).times.and_return(false)
88
88
 
89
89
  expect do
90
90
  @mutex.lock(timeout: 0.03)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gcslock
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Raphaël Beamonte
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: google-cloud-storage
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 1.26.1
33
+ version: 1.24.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 1.26.1
40
+ version: 1.24.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement