From f41089db2ce19f90e335d5627040ec0907663e69 Mon Sep 17 00:00:00 2001 From: Pawel Mikolajewski Date: Tue, 8 May 2012 09:34:41 +0200 Subject: [PATCH] Handle long key_with_namespace, fixes #209 and #202 --- lib/dalli/client.rb | 5 +++-- test/test_dalli.rb | 5 +++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/dalli/client.rb b/lib/dalli/client.rb index cfa7e404..6886a9cd 100644 --- a/lib/dalli/client.rb +++ b/lib/dalli/client.rb @@ -243,8 +243,7 @@ def env_servers # Chokepoint method for instrumentation def perform(op, key, *args) key = key.to_s - validate_key(key) - key = key_with_namespace(key) + key = validate_key(key) begin server = ring.server_for_key(key) server.request(op, key, *args) @@ -257,7 +256,9 @@ def perform(op, key, *args) def validate_key(key) raise ArgumentError, "key cannot be blank" if !key || key.length == 0 + key = key_with_namespace(key) raise ArgumentError, "key too long #{key.inspect}" if key.length > 250 + return key end def key_with_namespace(key) diff --git a/test/test_dalli.rb b/test/test_dalli.rb index 0fe8a395..9a94e36b 100644 --- a/test/test_dalli.rb +++ b/test/test_dalli.rb @@ -404,6 +404,11 @@ dc2.set('namespaced', 2) assert_equal 1, dc.get('namespaced') assert_equal 2, dc2.get('namespaced') + + dc3 = Dalli::Client.new('localhost:19122', :namespace => 'c' * 100) + assert_raises ArgumentError do + dc3.get "a" * 151 + end end end