diff --git a/lib/suo/client/base.rb b/lib/suo/client/base.rb index 10ab061..f6dc8be 100644 --- a/lib/suo/client/base.rb +++ b/lib/suo/client/base.rb @@ -1,6 +1,7 @@ module Suo module Client class Base + DEFAULT_OPTIONS = { retry_timeout: 0.1, retry_delay: 0.01, @@ -111,7 +112,7 @@ module Suo break unless acquisition_lock break if set(key, serialize_locks(locks), cas, options) end - rescue FailedToAcquireLock => _ # rubocop:disable Lint/HandleExceptions + rescue LockClientError => _ # rubocop:disable Lint/HandleExceptions # ignore - assume success due to optimistic locking end @@ -163,7 +164,7 @@ module Suo sleep(rand(options[:retry_delay] * 1000).to_f / 1000) end rescue => _ - raise FailedToAcquireLock + raise LockClientError end def serialize_locks(locks) diff --git a/lib/suo/client/errors.rb b/lib/suo/client/errors.rb deleted file mode 100644 index 15fee88..0000000 --- a/lib/suo/client/errors.rb +++ /dev/null @@ -1,7 +0,0 @@ -module Suo - module Client - module Errors - class FailedToAcquireLock < StandardError; end - end - end -end diff --git a/lib/suo/clients.rb b/lib/suo/clients.rb index c9e741a..e8f1151 100644 --- a/lib/suo/clients.rb +++ b/lib/suo/clients.rb @@ -8,7 +8,7 @@ require "redis" require "msgpack" -require "suo/client/errors" +require "suo/errors" require "suo/client/base" require "suo/client/memcached" require "suo/client/redis" diff --git a/lib/suo/errors.rb b/lib/suo/errors.rb new file mode 100644 index 0000000..f7f2331 --- /dev/null +++ b/lib/suo/errors.rb @@ -0,0 +1,3 @@ +module Suo + class LockClientError < StandardError; end +end diff --git a/test/client_test.rb b/test/client_test.rb index 8fcf41c..d5c9492 100644 --- a/test/client_test.rb +++ b/test/client_test.rb @@ -11,6 +11,12 @@ module ClientTests assert_equal "Client required", exception.message end + def test_throws_failed_error_on_bad_client + assert_raises(Suo::LockClientError) do + @klass.lock(TEST_KEY, 1, client: {}) + end + end + def test_class_single_resource_locking lock1 = @klass.lock(TEST_KEY, 1, client: @klass_client) refute_nil lock1