From 1aacc0c1a1cf54bb27fa52afa2a76e340e56bc81 Mon Sep 17 00:00:00 2001 From: Nick Elser Date: Sun, 12 Apr 2015 20:47:35 -0700 Subject: [PATCH] properly throw lock LockClientError --- lib/suo/client/base.rb | 5 +++-- lib/suo/client/errors.rb | 7 ------- lib/suo/clients.rb | 2 +- lib/suo/errors.rb | 3 +++ test/client_test.rb | 6 ++++++ 5 files changed, 13 insertions(+), 10 deletions(-) delete mode 100644 lib/suo/client/errors.rb create mode 100644 lib/suo/errors.rb 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