diff --git a/lib/suo/client/base.rb b/lib/suo/client/base.rb index 4329138..50a8406 100644 --- a/lib/suo/client/base.rb +++ b/lib/suo/client/base.rb @@ -123,7 +123,7 @@ module Suo fail NotImplementedError end - def initial_set(key) # rubocop:disable Lint/UnusedMethodArgument + def initial_set(key, val = "") # rubocop:disable Lint/UnusedMethodArgument fail NotImplementedError end @@ -162,7 +162,7 @@ module Suo unpacked.map do |time, token| [Time.at(time), token] end - rescue EOFError => _ + rescue EOFError, MessagePack::MalformedFormatError => _ [] end diff --git a/lib/suo/client/memcached.rb b/lib/suo/client/memcached.rb index a624490..dea8e4a 100644 --- a/lib/suo/client/memcached.rb +++ b/lib/suo/client/memcached.rb @@ -20,8 +20,8 @@ module Suo @client.set_cas(key, newval, cas) end - def initial_set(key) - @client.set(key, "") + def initial_set(key, val = "") + @client.set(key, val) end end end diff --git a/lib/suo/client/redis.rb b/lib/suo/client/redis.rb index ad5d3b8..97d67c3 100644 --- a/lib/suo/client/redis.rb +++ b/lib/suo/client/redis.rb @@ -32,8 +32,8 @@ module Suo @client.unwatch end - def initial_set(key) - @client.set(key, "") + def initial_set(key, val = "") + @client.set(key, val) end end end diff --git a/test/client_test.rb b/test/client_test.rb index 717f182..5ae8b25 100644 --- a/test/client_test.rb +++ b/test/client_test.rb @@ -31,6 +31,12 @@ module ClientTests assert_equal false, locked end + def test_empty_lock_on_invalid_data + @client.send(:initial_set, TEST_KEY, "bad value") + locked = @client.locked?(TEST_KEY) + assert_equal false, locked + end + def test_clear lock1 = @client.lock(TEST_KEY, 1) refute_nil lock1