diff --git a/lib/suo/client/base.rb b/lib/suo/client/base.rb index caec55c..a6bf5b5 100644 --- a/lib/suo/client/base.rb +++ b/lib/suo/client/base.rb @@ -2,13 +2,13 @@ module Suo module Client class Base DEFAULT_OPTIONS = { - retry_count: 3, + retry_timeout: 0.1, retry_delay: 0.01, stale_lock_expiration: 3600 }.freeze def initialize(options = {}) - @options = self.class.merge_defaults(options).merge(_initialized: true) + @options = self.class.merge_defaults(options) end def lock(key, resources = 1, options = {}) @@ -120,15 +120,11 @@ module Suo end def merge_defaults(options = {}) - unless options[:_initialized] - options = self::DEFAULT_OPTIONS.merge(options) + options = self::DEFAULT_OPTIONS.merge(options) - fail "Client required" unless options[:client] - end + fail "Client required" unless options[:client] - if options[:retry_timeout] - options[:retry_count] = (options[:retry_timeout] / options[:retry_delay].to_f).floor - end + options[:retry_count] = (options[:retry_timeout] / options[:retry_delay].to_f).ceil options end diff --git a/test/client_test.rb b/test/client_test.rb index 059e1bc..fb623ec 100644 --- a/test/client_test.rb +++ b/test/client_test.rb @@ -76,7 +76,7 @@ module ClientTests 100.times.map do |i| Thread.new do success = @client.lock(TEST_KEY, 50, retry_timeout: 0.9) do - sleep(1.1) + sleep(1) success_counter << i end @@ -95,7 +95,7 @@ module ClientTests 100.times.map do |i| Thread.new do success = @client.lock(TEST_KEY, 50, retry_timeout: 2) do - sleep(1) + sleep(0.5) success_counter << i end