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.
Files changed (213) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build_release_pipeline.yaml +53 -0
  3. data/.gitignore +33 -0
  4. data/BENCHMARKS +130 -126
  5. data/CHANGELOG +1 -6
  6. data/Gemfile +8 -1
  7. data/Gemfile.lock +25 -38
  8. data/README.md +144 -0
  9. data/Rakefile +21 -93
  10. data/ext/rlibmemcached/extconf.rb +76 -0
  11. data/ext/{rlibmemcached.i → rlibmemcached/rlibmemcached.i} +48 -69
  12. data/ext/{rlibmemcached_wrap.c → rlibmemcached/rlibmemcached_wrap.c} +146 -320
  13. data/lib/memcached/exceptions.rb +1 -12
  14. data/lib/memcached/experimental.rb +1 -33
  15. data/lib/memcached/memcached.rb +41 -34
  16. data/lib/memcached/version.rb +1 -1
  17. data/lib/memcached.rb +9 -4
  18. data/memcached.gemspec +0 -0
  19. data/memcached.pem +21 -0
  20. data/vendor/libmemcached-0.32/config/config.guess +1815 -0
  21. data/vendor/libmemcached-0.32/config/config.sub +2354 -0
  22. data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_connect.c +23 -13
  23. data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_io.c +18 -13
  24. data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_purge.c +1 -1
  25. data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_storage.c +16 -25
  26. metadata +195 -249
  27. data/Manifest +0 -209
  28. data/README.rdoc +0 -124
  29. data/ext/extconf-make.rb +0 -25
  30. data/ext/extconf.rb +0 -78
  31. data/ext/libmemcached-0.32/config/config.guess +0 -1561
  32. data/ext/libmemcached-0.32/config/config.sub +0 -1686
  33. data/lib/memcached/auth.rb +0 -16
  34. data/test/profile/benchmark.rb +0 -280
  35. data/test/profile/c_profiler.rb +0 -14
  36. data/test/profile/exercise.rb +0 -185
  37. data/test/profile/rb_profiler.rb +0 -21
  38. data/test/profile/valgrind.rb +0 -10
  39. data/test/setup.rb +0 -30
  40. data/test/teardown.rb +0 -0
  41. data/test/test_helper.rb +0 -18
  42. data/test/unit/binding_test.rb +0 -8
  43. data/test/unit/memcached_experimental_test.rb +0 -272
  44. data/test/unit/memcached_test.rb +0 -1487
  45. data/test/unit/rails_test.rb +0 -330
  46. /data/{ext → vendor}/libmemcached-0.32/AUTHORS +0 -0
  47. /data/{ext → vendor}/libmemcached-0.32/COPYING +0 -0
  48. /data/{ext → vendor}/libmemcached-0.32/ChangeLog +0 -0
  49. /data/{ext → vendor}/libmemcached-0.32/INSTALL +0 -0
  50. /data/{ext → vendor}/libmemcached-0.32/Makefile.am +0 -0
  51. /data/{ext → vendor}/libmemcached-0.32/Makefile.in +0 -0
  52. /data/{ext → vendor}/libmemcached-0.32/NEWS +0 -0
  53. /data/{ext → vendor}/libmemcached-0.32/README +0 -0
  54. /data/{ext → vendor}/libmemcached-0.32/THANKS +0 -0
  55. /data/{ext → vendor}/libmemcached-0.32/TODO +0 -0
  56. /data/{ext → vendor}/libmemcached-0.32/aclocal.m4 +0 -0
  57. /data/{ext → vendor}/libmemcached-0.32/clients/Makefile.am +0 -0
  58. /data/{ext → vendor}/libmemcached-0.32/clients/Makefile.in +0 -0
  59. /data/{ext → vendor}/libmemcached-0.32/clients/client_options.h +0 -0
  60. /data/{ext → vendor}/libmemcached-0.32/clients/execute.c +0 -0
  61. /data/{ext → vendor}/libmemcached-0.32/clients/execute.h +0 -0
  62. /data/{ext → vendor}/libmemcached-0.32/clients/generator.c +0 -0
  63. /data/{ext → vendor}/libmemcached-0.32/clients/generator.h +0 -0
  64. /data/{ext → vendor}/libmemcached-0.32/clients/memcat.c +0 -0
  65. /data/{ext → vendor}/libmemcached-0.32/clients/memcp.c +0 -0
  66. /data/{ext → vendor}/libmemcached-0.32/clients/memdump.c +0 -0
  67. /data/{ext → vendor}/libmemcached-0.32/clients/memerror.c +0 -0
  68. /data/{ext → vendor}/libmemcached-0.32/clients/memflush.c +0 -0
  69. /data/{ext → vendor}/libmemcached-0.32/clients/memrm.c +0 -0
  70. /data/{ext → vendor}/libmemcached-0.32/clients/memslap.c +0 -0
  71. /data/{ext → vendor}/libmemcached-0.32/clients/memstat.c +0 -0
  72. /data/{ext → vendor}/libmemcached-0.32/clients/utilities.c +0 -0
  73. /data/{ext → vendor}/libmemcached-0.32/clients/utilities.h +0 -0
  74. /data/{ext → vendor}/libmemcached-0.32/config/compile +0 -0
  75. /data/{ext → vendor}/libmemcached-0.32/config/config.rpath +0 -0
  76. /data/{ext → vendor}/libmemcached-0.32/config/depcomp +0 -0
  77. /data/{ext → vendor}/libmemcached-0.32/config/install-sh +0 -0
  78. /data/{ext → vendor}/libmemcached-0.32/config/ltmain.sh +0 -0
  79. /data/{ext → vendor}/libmemcached-0.32/config/missing +0 -0
  80. /data/{ext → vendor}/libmemcached-0.32/config.h.in +0 -0
  81. /data/{ext → vendor}/libmemcached-0.32/configure +0 -0
  82. /data/{ext → vendor}/libmemcached-0.32/configure.ac +0 -0
  83. /data/{ext → vendor}/libmemcached-0.32/libmemcached/Makefile.am +0 -0
  84. /data/{ext → vendor}/libmemcached-0.32/libmemcached/Makefile.in +0 -0
  85. /data/{ext → vendor}/libmemcached-0.32/libmemcached/byteorder.c +0 -0
  86. /data/{ext → vendor}/libmemcached-0.32/libmemcached/common.h +0 -0
  87. /data/{ext → vendor}/libmemcached-0.32/libmemcached/crc.c +0 -0
  88. /data/{ext → vendor}/libmemcached-0.32/libmemcached/hsieh_hash.c +0 -0
  89. /data/{ext → vendor}/libmemcached-0.32/libmemcached/jenkins_hash.c +0 -0
  90. /data/{ext → vendor}/libmemcached-0.32/libmemcached/libmemcached.ver +0 -0
  91. /data/{ext → vendor}/libmemcached-0.32/libmemcached/libmemcached_probes.d +0 -0
  92. /data/{ext → vendor}/libmemcached-0.32/libmemcached/libmemcached_probes.h +0 -0
  93. /data/{ext → vendor}/libmemcached-0.32/libmemcached/md5.c +0 -0
  94. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached/README.txt +0 -0
  95. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached/protocol_binary.h +0 -0
  96. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached.c +0 -0
  97. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached.h +0 -0
  98. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached.hpp +0 -0
  99. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_allocators.c +0 -0
  100. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_analyze.c +0 -0
  101. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_auto.c +0 -0
  102. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_behavior.c +0 -0
  103. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_callback.c +0 -0
  104. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_configure.h.in +0 -0
  105. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_constants.h +0 -0
  106. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_delete.c +0 -0
  107. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_do.c +0 -0
  108. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_dump.c +0 -0
  109. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_exist.c +0 -0
  110. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_exist.h +0 -0
  111. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_fetch.c +0 -0
  112. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_flush.c +0 -0
  113. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_flush_buffers.c +0 -0
  114. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_get.c +0 -0
  115. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_get.h +0 -0
  116. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_hash.c +0 -0
  117. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_hosts.c +0 -0
  118. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_internal.h +0 -0
  119. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_io.h +0 -0
  120. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_key.c +0 -0
  121. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_parse.c +0 -0
  122. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_pool.h +0 -0
  123. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_quit.c +0 -0
  124. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_response.c +0 -0
  125. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_result.c +0 -0
  126. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_result.h +0 -0
  127. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_sasl.c +0 -0
  128. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_sasl.h +0 -0
  129. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_server.c +0 -0
  130. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_server.h +0 -0
  131. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_stats.c +0 -0
  132. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_storage.h +0 -0
  133. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_strerror.c +0 -0
  134. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_string.c +0 -0
  135. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_string.h +0 -0
  136. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_touch.c +0 -0
  137. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_touch.h +0 -0
  138. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_types.h +0 -0
  139. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_util.h +0 -0
  140. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_verbosity.c +0 -0
  141. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_version.c +0 -0
  142. /data/{ext → vendor}/libmemcached-0.32/libmemcached/memcached_watchpoint.h +0 -0
  143. /data/{ext → vendor}/libmemcached-0.32/libmemcached/murmur_hash.c +0 -0
  144. /data/{ext → vendor}/libmemcached-0.32/libmemcached/visibility.h +0 -0
  145. /data/{ext → vendor}/libmemcached-0.32/libmemcachedutil/Makefile.am +0 -0
  146. /data/{ext → vendor}/libmemcached-0.32/libmemcachedutil/Makefile.in +0 -0
  147. /data/{ext → vendor}/libmemcached-0.32/libmemcachedutil/libmemcachedutil.ver +0 -0
  148. /data/{ext → vendor}/libmemcached-0.32/libmemcachedutil/memcached_pool.c +0 -0
  149. /data/{ext → vendor}/libmemcached-0.32/m4/ac_cxx_compile_stdcxx_0x.m4 +0 -0
  150. /data/{ext → vendor}/libmemcached-0.32/m4/ac_cxx_header_stdcxx_98.m4 +0 -0
  151. /data/{ext → vendor}/libmemcached-0.32/m4/acx_pthread.m4 +0 -0
  152. /data/{ext → vendor}/libmemcached-0.32/m4/byteorder.m4 +0 -0
  153. /data/{ext → vendor}/libmemcached-0.32/m4/deprecated.m4 +0 -0
  154. /data/{ext → vendor}/libmemcached-0.32/m4/enable_utillib.m4 +0 -0
  155. /data/{ext → vendor}/libmemcached-0.32/m4/extensions.m4 +0 -0
  156. /data/{ext → vendor}/libmemcached-0.32/m4/hsieh.m4 +0 -0
  157. /data/{ext → vendor}/libmemcached-0.32/m4/lib-prefix.m4 +0 -0
  158. /data/{ext → vendor}/libmemcached-0.32/m4/libtool.m4 +0 -0
  159. /data/{ext → vendor}/libmemcached-0.32/m4/ltoptions.m4 +0 -0
  160. /data/{ext → vendor}/libmemcached-0.32/m4/ltsugar.m4 +0 -0
  161. /data/{ext → vendor}/libmemcached-0.32/m4/ltversion.m4 +0 -0
  162. /data/{ext → vendor}/libmemcached-0.32/m4/lt~obsolete.m4 +0 -0
  163. /data/{ext → vendor}/libmemcached-0.32/m4/memcached.m4 +0 -0
  164. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_64bit.m4 +0 -0
  165. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_canonical.m4 +0 -0
  166. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_check_compiler_version.m4 +0 -0
  167. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_check_cxx_standard.m4 +0 -0
  168. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_enable_dtrace.m4 +0 -0
  169. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_ensure_gcc_version.m4 +0 -0
  170. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_have_better_malloc.m4 +0 -0
  171. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_have_sasl.m4 +0 -0
  172. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_header_assert.m4 +0 -0
  173. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_libtool.m4 +0 -0
  174. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_optimize.m4 +0 -0
  175. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_shared_ptr.m4 +0 -0
  176. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_vc_build.m4 +0 -0
  177. /data/{ext → vendor}/libmemcached-0.32/m4/pandora_warnings.m4 +0 -0
  178. /data/{ext → vendor}/libmemcached-0.32/m4/pod2man.m4 +0 -0
  179. /data/{ext → vendor}/libmemcached-0.32/m4/protocol_binary.m4 +0 -0
  180. /data/{ext → vendor}/libmemcached-0.32/m4/setsockopt.m4 +0 -0
  181. /data/{ext → vendor}/libmemcached-0.32/m4/visibility.m4 +0 -0
  182. /data/{ext → vendor}/libmemcached-0.32/support/Makefile.am +0 -0
  183. /data/{ext → vendor}/libmemcached-0.32/support/Makefile.in +0 -0
  184. /data/{ext → vendor}/libmemcached-0.32/support/libmemcached-fc.spec.in +0 -0
  185. /data/{ext → vendor}/libmemcached-0.32/support/libmemcached.pc.in +0 -0
  186. /data/{ext → vendor}/libmemcached-0.32/support/libmemcached.spec +0 -0
  187. /data/{ext → vendor}/libmemcached-0.32/support/libmemcached.spec.in +0 -0
  188. /data/{ext → vendor}/libmemcached-0.32/support/set_benchmark.sh +0 -0
  189. /data/{ext → vendor}/libmemcached-0.32/tests/Makefile.am +0 -0
  190. /data/{ext → vendor}/libmemcached-0.32/tests/Makefile.in +0 -0
  191. /data/{ext → vendor}/libmemcached-0.32/tests/atomsmasher.c +0 -0
  192. /data/{ext → vendor}/libmemcached-0.32/tests/function.c +0 -0
  193. /data/{ext → vendor}/libmemcached-0.32/tests/ketama_test_cases.h +0 -0
  194. /data/{ext → vendor}/libmemcached-0.32/tests/output.cmp +0 -0
  195. /data/{ext → vendor}/libmemcached-0.32/tests/output.res +0 -0
  196. /data/{ext → vendor}/libmemcached-0.32/tests/output2.res +0 -0
  197. /data/{ext → vendor}/libmemcached-0.32/tests/plus.cpp +0 -0
  198. /data/{ext → vendor}/libmemcached-0.32/tests/r/memcat.res +0 -0
  199. /data/{ext → vendor}/libmemcached-0.32/tests/r/memcp.res +0 -0
  200. /data/{ext → vendor}/libmemcached-0.32/tests/r/memrm.res +0 -0
  201. /data/{ext → vendor}/libmemcached-0.32/tests/r/memslap.res +0 -0
  202. /data/{ext → vendor}/libmemcached-0.32/tests/r/memstat.res +0 -0
  203. /data/{ext → vendor}/libmemcached-0.32/tests/server.c +0 -0
  204. /data/{ext → vendor}/libmemcached-0.32/tests/server.h +0 -0
  205. /data/{ext → vendor}/libmemcached-0.32/tests/start.c +0 -0
  206. /data/{ext → vendor}/libmemcached-0.32/tests/t/memcat.test +0 -0
  207. /data/{ext → vendor}/libmemcached-0.32/tests/t/memcp.test +0 -0
  208. /data/{ext → vendor}/libmemcached-0.32/tests/t/memrm.test +0 -0
  209. /data/{ext → vendor}/libmemcached-0.32/tests/t/memslap.test +0 -0
  210. /data/{ext → vendor}/libmemcached-0.32/tests/t/memstat.test +0 -0
  211. /data/{ext → vendor}/libmemcached-0.32/tests/test.c +0 -0
  212. /data/{ext → vendor}/libmemcached-0.32/tests/test.h +0 -0
  213. /data/{ext → vendor}/libmemcached-0.32/tests/udp.c +0 -0
@@ -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
- class Error < RuntimeError
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 tries < options[:exception_retry_limit] && should_retry(e)
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
@@ -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
- if options[:show_backtraces]
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\d\.-]+(:\d{1,5}){0,2}$/
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, "Servers must be either in the format 'host:port[:weight]' (e.g., 'localhost:11211' or 'localhost:11211:10') for a network server, or a valid path to a Unix domain socket (e.g., /var/run/memcached)."
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(e)
281
- options[:exceptions_to_retry].each {|ex_class| return true if e.instance_of?(ex_class)}
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
- retry if e.instance_of?(ClientError) && !tries
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 tries < options[:exception_retry_limit] && should_retry(e)
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 tries < options[:exception_retry_limit] && should_retry(e)
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 tries < options[:exception_retry_limit] && should_retry(e)
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 tries < options[:exception_retry_limit] && should_retry(e)
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 tries < options[:exception_retry_limit] && should_retry(e)
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 tries < options[:exception_retry_limit] && should_retry(e)
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 tries < options[:exception_retry_limit] && should_retry(e)
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 tries < options[:exception_retry_limit] && should_retry(e)
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 tries < options[:exception_retry_limit] && should_retry(e)
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 tries < options[:exception_retry_limit] && should_retry(e)
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 @not_found # Lib::MEMCACHED_NOTFOUND
591
+ raise NotFound, "NOTFOUND".freeze, @show_backtraces, cause: nil # Lib::MEMCACHED_NOTFOUND
591
592
  elsif ret == 14
592
- raise @not_stored # Lib::MEMCACHED_NOTSTORED
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 |server|
634
- server.next_retry > time
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 |key, value_and_flags|
697
- hash[key] = @codec.decode(key, *value_and_flags)
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 tries < options[:exception_retry_limit] && should_retry(e)
724
+ raise unless should_retry(e, tries)
718
725
  tries += 1
719
726
  retry
720
727
  end
@@ -1,3 +1,3 @@
1
1
  class Memcached
2
- VERSION = '1.8.4'
2
+ VERSION = '1.8.6'
3
3
  end
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-----