vinted-memcached 1.8.4 → 1.8.6
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.
- checksums.yaml +4 -4
- data/.github/workflows/build_release_pipeline.yaml +53 -0
- data/.gitignore +33 -0
- data/BENCHMARKS +130 -126
- data/CHANGELOG +1 -6
- data/Gemfile +8 -1
- data/Gemfile.lock +25 -38
- data/README.md +144 -0
- data/Rakefile +21 -93
- data/ext/rlibmemcached/extconf.rb +76 -0
- data/ext/{rlibmemcached.i → rlibmemcached/rlibmemcached.i} +48 -69
- data/ext/{rlibmemcached_wrap.c → rlibmemcached/rlibmemcached_wrap.c} +146 -320
- data/lib/memcached/exceptions.rb +1 -12
- data/lib/memcached/experimental.rb +1 -33
- data/lib/memcached/memcached.rb +41 -34
- data/lib/memcached/version.rb +1 -1
- data/lib/memcached.rb +9 -4
- data/memcached.gemspec +0 -0
- data/memcached.pem +21 -0
- data/vendor/libmemcached-0.32/config/config.guess +1815 -0
- data/vendor/libmemcached-0.32/config/config.sub +2354 -0
- data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_connect.c +23 -13
- data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_io.c +18 -13
- data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_purge.c +1 -1
- data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_storage.c +16 -25
- metadata +195 -249
- data/Manifest +0 -209
- data/README.rdoc +0 -124
- data/ext/extconf-make.rb +0 -25
- data/ext/extconf.rb +0 -78
- data/ext/libmemcached-0.32/config/config.guess +0 -1561
- data/ext/libmemcached-0.32/config/config.sub +0 -1686
- data/lib/memcached/auth.rb +0 -16
- data/test/profile/benchmark.rb +0 -280
- data/test/profile/c_profiler.rb +0 -14
- data/test/profile/exercise.rb +0 -185
- data/test/profile/rb_profiler.rb +0 -21
- data/test/profile/valgrind.rb +0 -10
- data/test/setup.rb +0 -30
- data/test/teardown.rb +0 -0
- data/test/test_helper.rb +0 -18
- data/test/unit/binding_test.rb +0 -8
- data/test/unit/memcached_experimental_test.rb +0 -272
- data/test/unit/memcached_test.rb +0 -1487
- data/test/unit/rails_test.rb +0 -330
- /data/{ext → vendor}/libmemcached-0.32/AUTHORS +0 -0
- /data/{ext → vendor}/libmemcached-0.32/COPYING +0 -0
- /data/{ext → vendor}/libmemcached-0.32/ChangeLog +0 -0
- /data/{ext → vendor}/libmemcached-0.32/INSTALL +0 -0
- /data/{ext → vendor}/libmemcached-0.32/Makefile.am +0 -0
- /data/{ext → vendor}/libmemcached-0.32/Makefile.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/NEWS +0 -0
- /data/{ext → vendor}/libmemcached-0.32/README +0 -0
- /data/{ext → vendor}/libmemcached-0.32/THANKS +0 -0
- /data/{ext → vendor}/libmemcached-0.32/TODO +0 -0
- /data/{ext → vendor}/libmemcached-0.32/aclocal.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/Makefile.am +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/Makefile.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/client_options.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/execute.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/execute.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/generator.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/generator.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/memcat.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/memcp.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/memdump.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/memerror.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/memflush.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/memrm.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/memslap.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/memstat.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/utilities.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/clients/utilities.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/config/compile +0 -0
- /data/{ext → vendor}/libmemcached-0.32/config/config.rpath +0 -0
- /data/{ext → vendor}/libmemcached-0.32/config/depcomp +0 -0
- /data/{ext → vendor}/libmemcached-0.32/config/install-sh +0 -0
- /data/{ext → vendor}/libmemcached-0.32/config/ltmain.sh +0 -0
- /data/{ext → vendor}/libmemcached-0.32/config/missing +0 -0
- /data/{ext → vendor}/libmemcached-0.32/config.h.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/configure +0 -0
- /data/{ext → vendor}/libmemcached-0.32/configure.ac +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/Makefile.am +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/Makefile.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/byteorder.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/common.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/crc.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/hsieh_hash.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/jenkins_hash.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/libmemcached.ver +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/libmemcached_probes.d +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/libmemcached_probes.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/md5.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached/README.txt +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached/protocol_binary.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached.hpp +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_allocators.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_analyze.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_auto.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_behavior.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_callback.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_configure.h.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_constants.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_delete.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_do.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_dump.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_exist.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_exist.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_fetch.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_flush.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_flush_buffers.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_get.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_get.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_hash.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_hosts.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_internal.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_io.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_key.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_parse.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_pool.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_quit.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_response.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_result.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_result.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_sasl.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_sasl.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_server.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_server.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_stats.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_storage.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_strerror.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_string.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_string.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_touch.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_touch.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_types.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_util.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_verbosity.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_version.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_watchpoint.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/murmur_hash.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcached/visibility.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcachedutil/Makefile.am +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcachedutil/Makefile.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcachedutil/libmemcachedutil.ver +0 -0
- /data/{ext → vendor}/libmemcached-0.32/libmemcachedutil/memcached_pool.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/ac_cxx_compile_stdcxx_0x.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/ac_cxx_header_stdcxx_98.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/acx_pthread.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/byteorder.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/deprecated.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/enable_utillib.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/extensions.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/hsieh.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/lib-prefix.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/libtool.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/ltoptions.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/ltsugar.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/ltversion.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/lt~obsolete.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/memcached.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_64bit.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_canonical.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_check_compiler_version.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_check_cxx_standard.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_enable_dtrace.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_ensure_gcc_version.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_have_better_malloc.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_have_sasl.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_header_assert.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_libtool.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_optimize.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_shared_ptr.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_vc_build.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pandora_warnings.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/pod2man.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/protocol_binary.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/setsockopt.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/m4/visibility.m4 +0 -0
- /data/{ext → vendor}/libmemcached-0.32/support/Makefile.am +0 -0
- /data/{ext → vendor}/libmemcached-0.32/support/Makefile.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/support/libmemcached-fc.spec.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/support/libmemcached.pc.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/support/libmemcached.spec +0 -0
- /data/{ext → vendor}/libmemcached-0.32/support/libmemcached.spec.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/support/set_benchmark.sh +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/Makefile.am +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/Makefile.in +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/atomsmasher.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/function.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/ketama_test_cases.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/output.cmp +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/output.res +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/output2.res +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/plus.cpp +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/r/memcat.res +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/r/memcp.res +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/r/memrm.res +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/r/memslap.res +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/r/memstat.res +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/server.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/server.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/start.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/t/memcat.test +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/t/memcp.test +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/t/memrm.test +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/t/memslap.test +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/t/memstat.test +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/test.c +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/test.h +0 -0
- /data/{ext → vendor}/libmemcached-0.32/tests/udp.c +0 -0
data/lib/memcached/exceptions.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
class Memcached
|
3
2
|
|
4
3
|
=begin rdoc
|
@@ -46,17 +45,7 @@ Subclasses correspond one-to-one with server response strings or libmemcached er
|
|
46
45
|
* Memcached::WriteFailure
|
47
46
|
|
48
47
|
=end
|
49
|
-
|
50
|
-
attr_accessor :no_backtrace
|
51
|
-
|
52
|
-
def set_backtrace(*args)
|
53
|
-
@no_backtrace ? [] : super
|
54
|
-
end
|
55
|
-
|
56
|
-
def backtrace(*args)
|
57
|
-
@no_backtrace ? [] : super
|
58
|
-
end
|
59
|
-
end
|
48
|
+
Error = Class.new(RuntimeError)
|
60
49
|
|
61
50
|
#:stopdoc:
|
62
51
|
|
@@ -1,6 +1,5 @@
|
|
1
1
|
class Memcached
|
2
2
|
module Experimental
|
3
|
-
|
4
3
|
# TOUCH is used to set a new expiration time for an existing item
|
5
4
|
def touch(key, ttl=@default_ttl)
|
6
5
|
check_return_code(
|
@@ -9,40 +8,9 @@ class Memcached
|
|
9
8
|
)
|
10
9
|
rescue => e
|
11
10
|
tries ||= 0
|
12
|
-
raise unless
|
11
|
+
raise unless should_retry(e, tries)
|
13
12
|
tries += 1
|
14
13
|
retry
|
15
14
|
end
|
16
|
-
|
17
|
-
def get_len(bytes, keys)
|
18
|
-
if keys.is_a? ::Array
|
19
|
-
# Multi get
|
20
|
-
ret = Lib.memcached_mget_len(@struct, keys, bytes);
|
21
|
-
check_return_code(ret, keys)
|
22
|
-
|
23
|
-
hash = {}
|
24
|
-
keys.each do
|
25
|
-
value, key, flags, ret = Lib.memcached_fetch_rvalue(@struct)
|
26
|
-
break if ret == Lib::MEMCACHED_END
|
27
|
-
if ret != Lib::MEMCACHED_NOTFOUND
|
28
|
-
check_return_code(ret, key)
|
29
|
-
# Assign the value
|
30
|
-
hash[key] = value
|
31
|
-
end
|
32
|
-
end
|
33
|
-
hash
|
34
|
-
else
|
35
|
-
# Single get_len
|
36
|
-
value, flags, ret = Lib.memcached_get_len_rvalue(@struct, keys, bytes)
|
37
|
-
check_return_code(ret, keys)
|
38
|
-
value
|
39
|
-
end
|
40
|
-
rescue => e
|
41
|
-
tries ||= 0
|
42
|
-
raise unless tries < options[:exception_retry_limit] && should_retry(e)
|
43
|
-
tries += 1
|
44
|
-
retry
|
45
|
-
end
|
46
|
-
|
47
15
|
end
|
48
16
|
end
|
data/lib/memcached/memcached.rb
CHANGED
@@ -3,6 +3,7 @@ The Memcached client class.
|
|
3
3
|
=end
|
4
4
|
class Memcached
|
5
5
|
FLAGS = 0x0
|
6
|
+
EMPTY_ARRAY = [].freeze
|
6
7
|
|
7
8
|
DEFAULTS = {
|
8
9
|
:hash => :fnv1_32,
|
@@ -174,17 +175,7 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
174
175
|
set_servers(servers)
|
175
176
|
|
176
177
|
# Not found exceptions
|
177
|
-
|
178
|
-
# Raise classes for full context
|
179
|
-
@not_found = NotFound
|
180
|
-
@not_stored = NotStored
|
181
|
-
else
|
182
|
-
# Raise fast context-free exception instances
|
183
|
-
@not_found = NotFound.new
|
184
|
-
@not_found.no_backtrace = true
|
185
|
-
@not_stored = NotStored.new
|
186
|
-
@not_stored.no_backtrace = true
|
187
|
-
end
|
178
|
+
@show_backtraces = options[:show_backtraces] ? nil : EMPTY_ARRAY
|
188
179
|
end
|
189
180
|
|
190
181
|
# Set the server list.
|
@@ -197,7 +188,7 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
197
188
|
args = [@struct, server, options[:default_weight].to_i]
|
198
189
|
Lib.memcached_server_add_unix_socket_with_weight(*args)
|
199
190
|
# Network
|
200
|
-
elsif server.is_a?(String) and server =~ /^[\w
|
191
|
+
elsif server.is_a?(String) and server =~ /^[\w\.-]+(:\d{1,5}){0,2}$/
|
201
192
|
host, port, weight = server.split(":")
|
202
193
|
args = [@struct, host, port.to_i, (weight || options[:default_weight]).to_i]
|
203
194
|
if options[:use_udp]
|
@@ -206,7 +197,11 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
206
197
|
Lib.memcached_server_add_with_weight(*args)
|
207
198
|
end
|
208
199
|
else
|
209
|
-
raise ArgumentError,
|
200
|
+
raise ArgumentError, <<-MSG
|
201
|
+
Servers must be either in the format 'host:port[:weight]' (e.g., 'localhost:11211' or 'localhost:11211:10')
|
202
|
+
for a network server, or a valid path to a Unix domain socket (e.g., /var/run/memcached).
|
203
|
+
But it was #{server}.
|
204
|
+
MSG
|
210
205
|
end
|
211
206
|
)
|
212
207
|
end
|
@@ -277,8 +272,14 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
277
272
|
end
|
278
273
|
|
279
274
|
# Should retry the exception
|
280
|
-
def should_retry(
|
281
|
-
options[:
|
275
|
+
def should_retry(exception, tries)
|
276
|
+
return false unless options[:exception_retry_limit]
|
277
|
+
return false unless tries < options[:exception_retry_limit]
|
278
|
+
|
279
|
+
options[:exceptions_to_retry].each do |ex_class|
|
280
|
+
return true if exception.instance_of?(ex_class)
|
281
|
+
end
|
282
|
+
|
282
283
|
false
|
283
284
|
end
|
284
285
|
|
@@ -322,8 +323,7 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
322
323
|
)
|
323
324
|
rescue => e
|
324
325
|
tries ||= 0
|
325
|
-
|
326
|
-
raise unless tries < options[:exception_retry_limit] && should_retry(e)
|
326
|
+
raise unless should_retry(e, tries)
|
327
327
|
tries += 1
|
328
328
|
retry
|
329
329
|
end
|
@@ -339,7 +339,7 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
339
339
|
)
|
340
340
|
rescue => e
|
341
341
|
tries ||= 0
|
342
|
-
raise unless
|
342
|
+
raise unless should_retry(e, tries)
|
343
343
|
tries += 1
|
344
344
|
retry
|
345
345
|
end
|
@@ -356,7 +356,7 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
356
356
|
value
|
357
357
|
rescue => e
|
358
358
|
tries ||= 0
|
359
|
-
raise unless
|
359
|
+
raise unless should_retry(e, tries)
|
360
360
|
tries += 1
|
361
361
|
retry
|
362
362
|
end
|
@@ -368,7 +368,7 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
368
368
|
value
|
369
369
|
rescue => e
|
370
370
|
tries ||= 0
|
371
|
-
raise unless
|
371
|
+
raise unless should_retry(e, tries)
|
372
372
|
tries += 1
|
373
373
|
retry
|
374
374
|
end
|
@@ -388,7 +388,7 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
388
388
|
)
|
389
389
|
rescue => e
|
390
390
|
tries ||= 0
|
391
|
-
raise unless
|
391
|
+
raise unless should_retry(e, tries)
|
392
392
|
tries += 1
|
393
393
|
retry
|
394
394
|
end
|
@@ -405,7 +405,7 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
405
405
|
)
|
406
406
|
rescue => e
|
407
407
|
tries ||= 0
|
408
|
-
raise unless
|
408
|
+
raise unless should_retry(e, tries)
|
409
409
|
tries += 1
|
410
410
|
retry
|
411
411
|
end
|
@@ -419,7 +419,7 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
419
419
|
)
|
420
420
|
rescue => e
|
421
421
|
tries ||= 0
|
422
|
-
raise unless
|
422
|
+
raise unless should_retry(e, tries)
|
423
423
|
tries += 1
|
424
424
|
retry
|
425
425
|
end
|
@@ -451,7 +451,7 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
451
451
|
single_cas(keys, value, ttl, flags, cas, decode)
|
452
452
|
end
|
453
453
|
rescue => e
|
454
|
-
raise unless
|
454
|
+
raise unless should_retry(e, tries)
|
455
455
|
tries += 1
|
456
456
|
retry
|
457
457
|
end
|
@@ -468,7 +468,7 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
468
468
|
)
|
469
469
|
rescue => e
|
470
470
|
tries ||= 0
|
471
|
-
raise unless
|
471
|
+
raise unless should_retry(e, tries)
|
472
472
|
tries += 1
|
473
473
|
retry
|
474
474
|
end
|
@@ -480,7 +480,7 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
480
480
|
)
|
481
481
|
rescue => e
|
482
482
|
tries ||= 0
|
483
|
-
raise unless
|
483
|
+
raise unless should_retry(e, tries)
|
484
484
|
tries += 1
|
485
485
|
retry
|
486
486
|
end
|
@@ -505,7 +505,7 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
505
505
|
end
|
506
506
|
rescue => e
|
507
507
|
tries ||= 0
|
508
|
-
raise unless
|
508
|
+
raise unless should_retry(e, tries)
|
509
509
|
tries += 1
|
510
510
|
retry
|
511
511
|
end
|
@@ -521,6 +521,7 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
521
521
|
|
522
522
|
# Gets a key's value from the previous server. Only useful with random distribution.
|
523
523
|
def get_from_last(key, decode=true)
|
524
|
+
warn("Memcached#get_from_last is deprecated and was removed in newer versions of libmemcached")
|
524
525
|
raise ArgumentError, "get_from_last() is not useful unless :random distribution is enabled." unless options[:distribution] == :random
|
525
526
|
value, flags, ret = Lib.memcached_get_from_last_rvalue(@struct, key)
|
526
527
|
check_return_code(ret, key)
|
@@ -587,9 +588,9 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
587
588
|
if ret == 0 # Lib::MEMCACHED_SUCCESS
|
588
589
|
elsif ret == 32 # Lib::MEMCACHED_BUFFERED
|
589
590
|
elsif ret == 16
|
590
|
-
raise @
|
591
|
+
raise NotFound, "NOTFOUND".freeze, @show_backtraces, cause: nil # Lib::MEMCACHED_NOTFOUND
|
591
592
|
elsif ret == 14
|
592
|
-
raise @
|
593
|
+
raise NotStored, "NOTSTORED".freeze, @show_backtraces, cause: nil # Lib::MEMCACHED_NOTSTORED
|
593
594
|
else
|
594
595
|
reraise(key, ret)
|
595
596
|
end
|
@@ -630,8 +631,8 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
630
631
|
# FIXME Is this still necessary with cached_errno?
|
631
632
|
def detect_failure
|
632
633
|
time = Time.now
|
633
|
-
server = server_structs.detect do |
|
634
|
-
|
634
|
+
server = server_structs.detect do |server_struct|
|
635
|
+
server_struct.next_retry > time
|
635
636
|
end
|
636
637
|
inspect_server(server) if server
|
637
638
|
end
|
@@ -645,6 +646,12 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
645
646
|
set_behavior(:hash, options[:hash])
|
646
647
|
end
|
647
648
|
|
649
|
+
def destroy_credentials
|
650
|
+
if options[:credentials] != nil
|
651
|
+
check_return_code(Lib.memcached_destroy_sasl_auth_data(@struct))
|
652
|
+
end
|
653
|
+
end
|
654
|
+
|
648
655
|
# Set the SASL credentials from the current options. If credentials aren't provided, try to get them from the environment.
|
649
656
|
def set_credentials
|
650
657
|
if options[:credentials]
|
@@ -693,8 +700,8 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
693
700
|
value, key, flags, ret = Lib.memcached_fetch_rvalue(@struct)
|
694
701
|
end
|
695
702
|
if decode
|
696
|
-
hash.each do |
|
697
|
-
hash[
|
703
|
+
hash.each do |inner_key, value_and_flags|
|
704
|
+
hash[inner_key] = @codec.decode(inner_key, *value_and_flags)
|
698
705
|
end
|
699
706
|
end
|
700
707
|
[hash, flags_and_cas]
|
@@ -714,7 +721,7 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
|
|
714
721
|
check_return_code(ret, key)
|
715
722
|
end
|
716
723
|
rescue => e
|
717
|
-
raise unless
|
724
|
+
raise unless should_retry(e, tries)
|
718
725
|
tries += 1
|
719
726
|
retry
|
720
727
|
end
|
data/lib/memcached/version.rb
CHANGED
data/lib/memcached.rb
CHANGED
@@ -21,13 +21,18 @@ require 'rlibmemcached'
|
|
21
21
|
class Memcached
|
22
22
|
Lib = Rlibmemcached
|
23
23
|
raise "libmemcached 0.32 required; you somehow linked to #{Lib.memcached_lib_version}." unless "0.32" == Lib.memcached_lib_version
|
24
|
+
private_constant :Lib
|
25
|
+
|
26
|
+
VERSION = File.read("#{File.dirname(__FILE__)}/../CHANGELOG")[/v([\d\.]+)\./, 1]
|
27
|
+
|
28
|
+
autoload :Rails, 'memcached/rails'
|
29
|
+
deprecate_constant :Rails
|
30
|
+
autoload :Experimental, 'memcached/experimental'
|
24
31
|
end
|
25
32
|
|
33
|
+
Object.deprecate_constant :Rlibmemcached
|
34
|
+
|
26
35
|
require 'memcached/exceptions'
|
27
36
|
require 'memcached/behaviors'
|
28
|
-
require 'memcached/auth'
|
29
37
|
require 'memcached/marshal_codec'
|
30
38
|
require 'memcached/memcached'
|
31
|
-
require 'memcached/rails'
|
32
|
-
require 'memcached/experimental'
|
33
|
-
require 'memcached/version'
|
data/memcached.gemspec
CHANGED
Binary file
|
data/memcached.pem
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDaDCCAlCgAwIBAgIBATANBgkqhkiG9w0BAQUFADA9MQ0wCwYDVQQDDARldmFu
|
3
|
+
MRgwFgYKCZImiZPyLGQBGRYIY2xvdWRidXIxEjAQBgoJkiaJk/IsZAEZFgJzdDAe
|
4
|
+
Fw0xMzExMDQyMDI1MDVaFw0xNDExMDQyMDI1MDVaMD0xDTALBgNVBAMMBGV2YW4x
|
5
|
+
GDAWBgoJkiaJk/IsZAEZFghjbG91ZGJ1cjESMBAGCgmSJomT8ixkARkWAnN0MIIB
|
6
|
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuG4q2IdTtlc7/IJkWPnbOAFt
|
7
|
+
ysKc3XmLHsjeSXXSPdQ1mb2cDXvyDS8TkzjrgDoJ96RR2xrh7bfkHAMJhSVMhsPM
|
8
|
+
rnYS7fDs//X1h6fRYBjjhqGeQhCL1xrS5/I4vKb7AjgFnuUbMZ/H0+ic2Ic2zTnZ
|
9
|
+
jttSQZ/QOlYyctrYoTzAFdPwL+dOxskOyAmAbtV/pV3owcXpChRT/tphC7u69sOk
|
10
|
+
+IjWsMwrBCbEdj/Jmh4a52QntAwPWx4Krt0zm8eV3/UjSObB3BR1pZ/i5IsSLPs1
|
11
|
+
lwMA6ywbfxBTP59XcgAyhfV3rRQXb+vjpf7OLuOCJOUIN8GEwb5HNjFo/UVdiwID
|
12
|
+
AQABo3MwcTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUbTCqyydn
|
13
|
+
0Rm6nngf15KtCEMc37swGwYDVR0RBBQwEoEQZXZhbkBjbG91ZGJ1ci5zdDAbBgNV
|
14
|
+
HRIEFDASgRBldmFuQGNsb3VkYnVyLnN0MA0GCSqGSIb3DQEBBQUAA4IBAQBggGGb
|
15
|
+
0AoyF0QofzkPImuhN1UF6eG/RdYOHqiUovuRN/9IblyKAaZAIl1mIspfCav8EVwo
|
16
|
+
SC6vz4OaIVpS7QdI04oLNHxhmC6C5TTBONtddDl93M+9uWVipD5uVPktcHWG+bKn
|
17
|
+
2L1lUykQXr8ra45TqAUZ/P+Yv76U8kUsVG2HE5gl/CgB5+V1qkpn5M4CADsvSvPA
|
18
|
+
qEATZvw+KUzzMCUiVzq+T6lDrrCt+sD3NZlvG4BD2PpQuPtDf1i61DUc+5s2Nwm2
|
19
|
+
t4uqNF7swBWS0n40/hmn5u8pT2JVsuwam79GGhJmNfCdPCcCbgphroexRcrwdURX
|
20
|
+
ly00Xdf1gDVBxRoR
|
21
|
+
-----END CERTIFICATE-----
|