memcached 0.17.2 → 0.17.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data.tar.gz.sig +0 -0
- data/CHANGELOG +2 -0
- data/ext/extconf.rb +3 -1
- data/lib/memcached/memcached.rb +4 -0
- data/memcached.gemspec +2 -2
- data/test/unit/memcached_test.rb +43 -33
- metadata +2 -2
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG
CHANGED
data/ext/extconf.rb
CHANGED
@@ -57,6 +57,8 @@ if !ENV["EXTERNAL_LIB"]
|
|
57
57
|
puts "Setting debug flags for libmemcached."
|
58
58
|
cflags << " -O0 -ggdb -DHAVE_DEBUG"
|
59
59
|
extraconf << " --enable-debug"
|
60
|
+
else
|
61
|
+
cflags << " -Os"
|
60
62
|
end
|
61
63
|
|
62
64
|
puts(cmd = "env CFLAGS='#{cflags}' LDFLAGS='#{ldflags}' ./configure --prefix=#{HERE} --without-memcached --disable-shared --disable-utils #{extraconf} 2>&1")
|
@@ -87,7 +89,7 @@ if ENV['DEBUG']
|
|
87
89
|
puts "Setting debug flags for gem."
|
88
90
|
$CFLAGS << " -O0 -ggdb -DHAVE_DEBUG"
|
89
91
|
else
|
90
|
-
$CFLAGS << " -
|
92
|
+
$CFLAGS << " -Os"
|
91
93
|
end
|
92
94
|
|
93
95
|
if DARWIN
|
data/lib/memcached/memcached.rb
CHANGED
@@ -225,6 +225,10 @@ Please note that when pipelining is enabled, setter and deleter methods do not r
|
|
225
225
|
Lib.memcached_set(@struct, key, value, ttl, flags),
|
226
226
|
key
|
227
227
|
)
|
228
|
+
rescue ClientError
|
229
|
+
# FIXME Memcached 1.2.8 occasionally rejects valid sets
|
230
|
+
tried = 1 and retry unless defined?(tried)
|
231
|
+
raise
|
228
232
|
end
|
229
233
|
|
230
234
|
# Add a key/value pair. Raises <b>Memcached::NotStored</b> if the key already exists on the server. The parameters are the same as <tt>set</tt>.
|
data/memcached.gemspec
CHANGED
@@ -2,12 +2,12 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{memcached}
|
5
|
-
s.version = "0.17.
|
5
|
+
s.version = "0.17.3"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Evan Weaver"]
|
9
9
|
s.cert_chain = ["/Users/eweaver/p/configuration/gem_certificates/evan_weaver-original-public_cert.pem"]
|
10
|
-
s.date = %q{2009-09-
|
10
|
+
s.date = %q{2009-09-30}
|
11
11
|
s.description = %q{An interface to the libmemcached C client.}
|
12
12
|
s.email = %q{}
|
13
13
|
s.extensions = ["ext/extconf.rb"]
|
data/test/unit/memcached_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
|
2
2
|
require "#{File.dirname(__FILE__)}/../test_helper"
|
3
3
|
require 'socket'
|
4
4
|
require 'mocha'
|
@@ -18,7 +18,7 @@ class MemcachedTest < Test::Unit::TestCase
|
|
18
18
|
:hash => :default,
|
19
19
|
:distribution => :modula}
|
20
20
|
@cache = Memcached.new(@servers, @options)
|
21
|
-
|
21
|
+
|
22
22
|
@binary_protocol_options = {
|
23
23
|
:prefix_key => @prefix_key,
|
24
24
|
:hash => :default,
|
@@ -154,7 +154,7 @@ class MemcachedTest < Test::Unit::TestCase
|
|
154
154
|
cache.append key, @value
|
155
155
|
rescue Memcached::NotStored => e
|
156
156
|
assert e.backtrace.empty?
|
157
|
-
end
|
157
|
+
end
|
158
158
|
end
|
159
159
|
|
160
160
|
def test_initialize_with_backtraces
|
@@ -228,7 +228,7 @@ class MemcachedTest < Test::Unit::TestCase
|
|
228
228
|
@udp_cache.get(key)
|
229
229
|
end
|
230
230
|
end
|
231
|
-
|
231
|
+
|
232
232
|
def test_get_nil
|
233
233
|
@cache.set key, nil, 0
|
234
234
|
result = @cache.get key
|
@@ -264,7 +264,7 @@ class MemcachedTest < Test::Unit::TestCase
|
|
264
264
|
result = cache.get key
|
265
265
|
end
|
266
266
|
end).real
|
267
|
-
|
267
|
+
|
268
268
|
socket.close
|
269
269
|
end
|
270
270
|
|
@@ -383,14 +383,14 @@ class MemcachedTest < Test::Unit::TestCase
|
|
383
383
|
@cache.get(["#{key}_1", "#{key}_2"])
|
384
384
|
end
|
385
385
|
end
|
386
|
-
|
386
|
+
|
387
387
|
def test_random_distribution_is_statistically_random
|
388
388
|
cache = Memcached.new(@servers, :distribution => :random)
|
389
389
|
cache.flush
|
390
390
|
20.times { |i| cache.set "#{key}#{i}", @value }
|
391
|
-
|
391
|
+
|
392
392
|
cache, hits = Memcached.new(@servers.first), 0
|
393
|
-
20.times do |i|
|
393
|
+
20.times do |i|
|
394
394
|
begin
|
395
395
|
cache.get "#{key}#{i}"
|
396
396
|
hits += 1
|
@@ -407,7 +407,7 @@ class MemcachedTest < Test::Unit::TestCase
|
|
407
407
|
assert_nothing_raised do
|
408
408
|
@cache.set(key, @value)
|
409
409
|
end
|
410
|
-
|
410
|
+
|
411
411
|
assert_nothing_raised do
|
412
412
|
@binary_protocol_cache.set(key, @value)
|
413
413
|
end
|
@@ -443,6 +443,16 @@ class MemcachedTest < Test::Unit::TestCase
|
|
443
443
|
end
|
444
444
|
end
|
445
445
|
|
446
|
+
def disabled_test_set_retry_on_client_error
|
447
|
+
# FIXME Test passes, but Mocha doesn't restore the original method properly
|
448
|
+
Rlibmemcached.stubs(:memcached_set).raises(Memcached::ClientError)
|
449
|
+
Rlibmemcached.stubs(:memcached_set).returns(0)
|
450
|
+
|
451
|
+
assert_nothing_raised do
|
452
|
+
@cache.set(key, @value)
|
453
|
+
end
|
454
|
+
end
|
455
|
+
|
446
456
|
# Delete
|
447
457
|
|
448
458
|
def test_delete
|
@@ -713,10 +723,10 @@ class MemcachedTest < Test::Unit::TestCase
|
|
713
723
|
rescue Memcached::ServerError => e
|
714
724
|
assert_match /^"object too large for cache". Key/, e.message
|
715
725
|
end
|
716
|
-
|
726
|
+
|
717
727
|
def test_errno_message
|
718
728
|
Rlibmemcached::MemcachedServerSt.any_instance.stubs("cached_errno").returns(1)
|
719
|
-
@cache.send(:check_return_code, Rlibmemcached::MEMCACHED_ERRNO, key)
|
729
|
+
@cache.send(:check_return_code, Rlibmemcached::MEMCACHED_ERRNO, key)
|
720
730
|
rescue Memcached::SystemError => e
|
721
731
|
assert_match /^Errno 1: "Operation not permitted". Key/, e.message
|
722
732
|
end
|
@@ -777,10 +787,10 @@ class MemcachedTest < Test::Unit::TestCase
|
|
777
787
|
)
|
778
788
|
assert_equal Rlibmemcached::MEMCACHED_BUFFERED, ret
|
779
789
|
end
|
780
|
-
|
790
|
+
|
781
791
|
def test_no_block_get
|
782
792
|
@noblock_cache.set key, @value
|
783
|
-
assert_equal @value,
|
793
|
+
assert_equal @value,
|
784
794
|
@noblock_cache.get(key)
|
785
795
|
end
|
786
796
|
|
@@ -814,8 +824,8 @@ class MemcachedTest < Test::Unit::TestCase
|
|
814
824
|
# Server removal and consistent hashing
|
815
825
|
|
816
826
|
def test_unresponsive_server
|
817
|
-
socket = stub_server 43041
|
818
|
-
|
827
|
+
socket = stub_server 43041
|
828
|
+
|
819
829
|
cache = Memcached.new(
|
820
830
|
[@servers.last, 'localhost:43041'],
|
821
831
|
:prefix_key => @prefix_key,
|
@@ -826,7 +836,7 @@ class MemcachedTest < Test::Unit::TestCase
|
|
826
836
|
:hash => :md5
|
827
837
|
)
|
828
838
|
|
829
|
-
# Hit second server up to the server_failure_limit
|
839
|
+
# Hit second server up to the server_failure_limit
|
830
840
|
key2 = 'test_missing_server'
|
831
841
|
assert_raise(Memcached::ATimeoutOccurred) { cache.set(key2, @value) }
|
832
842
|
assert_raise(Memcached::ATimeoutOccurred) { cache.get(key2, @value) }
|
@@ -845,14 +855,14 @@ class MemcachedTest < Test::Unit::TestCase
|
|
845
855
|
cache.set(key2, @value)
|
846
856
|
assert_equal cache.get(key2), @value
|
847
857
|
end
|
848
|
-
|
858
|
+
|
849
859
|
sleep(2)
|
850
|
-
|
860
|
+
|
851
861
|
# Hit second server again after restore, expect same failure
|
852
862
|
key2 = 'test_missing_server'
|
853
863
|
assert_raise(Memcached::ATimeoutOccurred) do
|
854
864
|
cache.set(key2, @value)
|
855
|
-
end
|
865
|
+
end
|
856
866
|
|
857
867
|
socket.close
|
858
868
|
end
|
@@ -868,7 +878,7 @@ class MemcachedTest < Test::Unit::TestCase
|
|
868
878
|
:hash => :md5
|
869
879
|
)
|
870
880
|
|
871
|
-
# Hit second server up to the server_failure_limit
|
881
|
+
# Hit second server up to the server_failure_limit
|
872
882
|
key2 = 'test_missing_server'
|
873
883
|
assert_raise(Memcached::SystemError) { cache.set(key2, @value) }
|
874
884
|
assert_raise(Memcached::SystemError) { cache.get(key2, @value) }
|
@@ -887,16 +897,16 @@ class MemcachedTest < Test::Unit::TestCase
|
|
887
897
|
cache.set(key2, @value)
|
888
898
|
assert_equal cache.get(key2), @value
|
889
899
|
end
|
890
|
-
|
900
|
+
|
891
901
|
sleep(2)
|
892
|
-
|
902
|
+
|
893
903
|
# Hit second server again after restore, expect same failure
|
894
904
|
key2 = 'test_missing_server'
|
895
905
|
assert_raise(Memcached::SystemError) do
|
896
906
|
cache.set(key2, @value)
|
897
|
-
end
|
907
|
+
end
|
898
908
|
end
|
899
|
-
|
909
|
+
|
900
910
|
def test_unresponsive_with_random_distribution
|
901
911
|
socket = stub_server 43041
|
902
912
|
failures = [Memcached::ATimeoutOccurred, Memcached::ServerIsMarkedDead]
|
@@ -913,15 +923,15 @@ class MemcachedTest < Test::Unit::TestCase
|
|
913
923
|
exceptions = []
|
914
924
|
100.times { begin; cache.set key, @value; rescue => e; exceptions << e; end }
|
915
925
|
assert_equal failures, exceptions.map { |x| x.class }
|
916
|
-
|
926
|
+
|
917
927
|
# Hit first server on retry
|
918
|
-
assert_nothing_raised { cache.set(key, @value) }
|
919
|
-
|
928
|
+
assert_nothing_raised { cache.set(key, @value) }
|
929
|
+
|
920
930
|
# Hit second server again after restore, expect same failures
|
921
931
|
sleep(2)
|
922
932
|
exceptions = []
|
923
933
|
100.times { begin; cache.set key, @value; rescue => e; exceptions << e; end }
|
924
|
-
assert_equal failures, exceptions.map { |x| x.class }
|
934
|
+
assert_equal failures, exceptions.map { |x| x.class }
|
925
935
|
|
926
936
|
socket.close
|
927
937
|
end
|
@@ -973,13 +983,13 @@ class MemcachedTest < Test::Unit::TestCase
|
|
973
983
|
end
|
974
984
|
threads.each {|thread| thread.join}
|
975
985
|
end
|
976
|
-
|
977
|
-
# Hash
|
978
|
-
|
986
|
+
|
987
|
+
# Hash
|
988
|
+
|
979
989
|
def test_hash
|
980
|
-
assert_equal 3157003241,
|
990
|
+
assert_equal 3157003241,
|
981
991
|
Rlibmemcached.memcached_generate_hash_rvalue("test", Rlibmemcached::MEMCACHED_HASH_FNV1_32)
|
982
|
-
end
|
992
|
+
end
|
983
993
|
|
984
994
|
# Memory cleanup
|
985
995
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: memcached
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.17.
|
4
|
+
version: 0.17.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evan Weaver
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
30
30
|
yZ0=
|
31
31
|
-----END CERTIFICATE-----
|
32
32
|
|
33
|
-
date: 2009-09-
|
33
|
+
date: 2009-09-30 00:00:00 -07:00
|
34
34
|
default_executable:
|
35
35
|
dependencies: []
|
36
36
|
|
metadata.gz.sig
CHANGED
Binary file
|