memcached 1.0.2 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
data.tar.gz.sig CHANGED
Binary file
data/BENCHMARKS CHANGED
@@ -7,7 +7,7 @@ You can easily run your own benchmarks, as long as you have memcached itself on
7
7
 
8
8
  == x86-64 OS X
9
9
 
10
- These benchmarks were run on an OS X 10.5 Core 2 Duo machine:
10
+ These benchmarks were run on a 64-bit multicore Linux machine, with memcached 1.4.4:
11
11
 
12
12
  Darwin amber.local 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:55:01 PDT
13
13
  2009; root:xnu-1228.15.4~1/RELEASE_I386 i386
@@ -125,3 +125,4 @@ These benchmarks were run on an OS X 10.5 Core 2 Duo machine:
125
125
  hash:murmur 0.210000 0.000000 0.210000 ( 0.203083)
126
126
  hash:jenkins 0.240000 0.000000 0.240000 ( 0.245728)
127
127
  hash:none 0.120000 0.000000 0.120000 ( 0.121219)
128
+
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ v1.0.5. Fix Manifest.
2
+
3
+ v1.0.4. Fix server_failure_count mangling in memcached_quit.
4
+
5
+ v1.0.3. Clearer benchmarking.
1
6
 
2
7
  v1.0.2. Don't allow compilation with -O3.
3
8
 
data/Manifest CHANGED
@@ -11,6 +11,7 @@ ext/libmemcached-2.patch
11
11
  ext/libmemcached-3.patch
12
12
  ext/libmemcached-4.patch
13
13
  ext/libmemcached-5.patch
14
+ ext/libmemcached-6.patch
14
15
  ext/libmemcached.patch
15
16
  ext/rlibmemcached.i
16
17
  ext/rlibmemcached_wrap.c
@@ -23,6 +24,7 @@ lib/memcached/experimental.rb
23
24
  lib/memcached/integer.rb
24
25
  lib/memcached/memcached.rb
25
26
  lib/memcached/rails.rb
27
+ memcached.gemspec
26
28
  test/profile/benchmark.rb
27
29
  test/profile/profile.rb
28
30
  test/profile/valgrind.rb
data/ext/extconf.rb CHANGED
@@ -71,6 +71,10 @@ def check_libmemcached
71
71
  puts(cmd = "#{patch} -p1 -Z < libmemcached-5.patch")
72
72
  raise "'#{cmd}' failed" unless system(cmd) or ENV['DEV']
73
73
 
74
+ puts "Patching libmemcached for failure count breakage."
75
+ puts(cmd = "#{patch} -p1 -Z < libmemcached-6.patch")
76
+ raise "'#{cmd}' failed" unless system(cmd) or ENV['DEV']
77
+
74
78
  puts "Touching aclocal.m4 in libmemcached."
75
79
  puts(cmd = "touch -r #{BUNDLE_PATH}/m4/visibility.m4 #{BUNDLE_PATH}/configure.ac #{BUNDLE_PATH}/m4/pandora_have_sasl.m4")
76
80
  raise "'#{cmd}' failed" unless system(cmd)
@@ -0,0 +1,20 @@
1
+ diff --git a/libmemcached-0.32/libmemcached/memcached_quit.c b/libmemcached-0.32/libmemcached/memcached_quit.c
2
+ index 9a200a1..80a03bc 100644
3
+ --- a/libmemcached-0.32/libmemcached/memcached_quit.c
4
+ +++ b/libmemcached-0.32/libmemcached/memcached_quit.c
5
+ @@ -49,7 +49,14 @@ void memcached_quit_server(memcached_server_st *ptr, uint8_t io_death)
6
+ memcached_server_response_reset(ptr);
7
+ }
8
+
9
+ - ptr->server_failure_counter++;
10
+ + if (io_death)
11
+ + {
12
+ + ptr->server_failure_counter++;
13
+ + }
14
+ + else
15
+ + {
16
+ + ptr->server_failure_counter = 0;
17
+ + }
18
+ }
19
+
20
+ void memcached_quit(memcached_st *ptr)
data/ext/rlibmemcached.i CHANGED
@@ -23,6 +23,7 @@
23
23
 
24
24
  %apply unsigned short { uint8_t };
25
25
  %apply unsigned int { uint16_t };
26
+ %apply unsigned int { uint32_t server_failure_counter };
26
27
  %apply unsigned int { uint32_t user_spec_len };
27
28
  %apply unsigned long { uint32_t flags, uint32_t offset, uint32_t weight };
28
29
  %apply unsigned long long { uint64_t data, uint64_t cas };
@@ -10924,8 +10924,8 @@ _wrap_MemcachedServerSt_server_failure_counter_set(int argc, VALUE *argv, VALUE
10924
10924
  uint32_t arg2 ;
10925
10925
  void *argp1 = 0 ;
10926
10926
  int res1 = 0 ;
10927
- void *argp2 ;
10928
- int res2 = 0 ;
10927
+ unsigned int val2 ;
10928
+ int ecode2 = 0 ;
10929
10929
 
10930
10930
  if ((argc < 1) || (argc > 1)) {
10931
10931
  rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc); SWIG_fail;
@@ -10935,17 +10935,11 @@ _wrap_MemcachedServerSt_server_failure_counter_set(int argc, VALUE *argv, VALUE
10935
10935
  SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "struct memcached_server_st *","server_failure_counter", 1, self ));
10936
10936
  }
10937
10937
  arg1 = (struct memcached_server_st *)(argp1);
10938
- {
10939
- res2 = SWIG_ConvertPtr(argv[0], &argp2, SWIGTYPE_p_uint32_t, 0 );
10940
- if (!SWIG_IsOK(res2)) {
10941
- SWIG_exception_fail(SWIG_ArgError(res2), Ruby_Format_TypeError( "", "uint32_t","server_failure_counter", 2, argv[0] ));
10942
- }
10943
- if (!argp2) {
10944
- SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "uint32_t","server_failure_counter", 2, argv[0]));
10945
- } else {
10946
- arg2 = *((uint32_t *)(argp2));
10947
- }
10948
- }
10938
+ ecode2 = SWIG_AsVal_unsigned_SS_int(argv[0], &val2);
10939
+ if (!SWIG_IsOK(ecode2)) {
10940
+ SWIG_exception_fail(SWIG_ArgError(ecode2), Ruby_Format_TypeError( "", "uint32_t","server_failure_counter", 2, argv[0] ));
10941
+ }
10942
+ arg2 = (uint32_t)(val2);
10949
10943
  if (arg1) (arg1)->server_failure_counter = arg2;
10950
10944
  return Qnil;
10951
10945
  fail:
@@ -10970,9 +10964,7 @@ _wrap_MemcachedServerSt_server_failure_counter_get(int argc, VALUE *argv, VALUE
10970
10964
  }
10971
10965
  arg1 = (struct memcached_server_st *)(argp1);
10972
10966
  result = ((arg1)->server_failure_counter);
10973
- {
10974
- vresult = UINT2NUM(result);
10975
- }
10967
+ vresult = SWIG_From_unsigned_SS_int((unsigned int)(result));
10976
10968
  return vresult;
10977
10969
  fail:
10978
10970
  return Qnil;
data/memcached.gemspec CHANGED
@@ -2,17 +2,17 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{memcached}
5
- s.version = "1.0.2"
5
+ s.version = "1.0.5"
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{2010-10-28}
10
+ s.date = %q{2011-01-27}
11
11
  s.description = %q{An interface to the libmemcached C client.}
12
12
  s.email = %q{}
13
13
  s.extensions = ["ext/extconf.rb"]
14
14
  s.extra_rdoc_files = ["BENCHMARKS", "CHANGELOG", "LICENSE", "README", "TODO", "lib/memcached.rb", "lib/memcached/behaviors.rb", "lib/memcached/exceptions.rb", "lib/memcached/experimental.rb", "lib/memcached/memcached.rb", "lib/memcached/rails.rb"]
15
- s.files = ["BENCHMARKS", "CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "TODO", "ext/extconf.rb", "ext/libmemcached-0.32.tar.gz", "ext/libmemcached-2.patch", "ext/libmemcached-3.patch", "ext/libmemcached-4.patch", "ext/libmemcached-5.patch", "ext/libmemcached.patch", "ext/rlibmemcached.i", "ext/rlibmemcached_wrap.c", "ext/sasl.patch", "lib/memcached.rb", "lib/memcached/auth.rb", "lib/memcached/behaviors.rb", "lib/memcached/exceptions.rb", "lib/memcached/experimental.rb", "lib/memcached/integer.rb", "lib/memcached/memcached.rb", "lib/memcached/rails.rb", "test/profile/benchmark.rb", "test/profile/profile.rb", "test/profile/valgrind.rb", "test/setup.rb", "test/teardown.rb", "test/test_helper.rb", "test/unit/binding_test.rb", "test/unit/memcached_experimental_test.rb", "test/unit/memcached_test.rb", "test/unit/rails_test.rb", "memcached.gemspec"]
15
+ s.files = ["BENCHMARKS", "CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "TODO", "ext/extconf.rb", "ext/libmemcached-0.32.tar.gz", "ext/libmemcached-2.patch", "ext/libmemcached-3.patch", "ext/libmemcached-4.patch", "ext/libmemcached-5.patch", "ext/libmemcached-6.patch", "ext/libmemcached.patch", "ext/rlibmemcached.i", "ext/rlibmemcached_wrap.c", "ext/sasl.patch", "lib/memcached.rb", "lib/memcached/auth.rb", "lib/memcached/behaviors.rb", "lib/memcached/exceptions.rb", "lib/memcached/experimental.rb", "lib/memcached/integer.rb", "lib/memcached/memcached.rb", "lib/memcached/rails.rb", "memcached.gemspec", "test/profile/benchmark.rb", "test/profile/profile.rb", "test/profile/valgrind.rb", "test/setup.rb", "test/teardown.rb", "test/test_helper.rb", "test/unit/binding_test.rb", "test/unit/memcached_experimental_test.rb", "test/unit/memcached_test.rb", "test/unit/rails_test.rb"]
16
16
  s.homepage = %q{http://blog.evanweaver.com/files/doc/fauna/memcached/}
17
17
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Memcached", "--main", "README"]
18
18
  s.require_paths = ["lib", "ext"]
@@ -10,12 +10,15 @@ require 'ruby-debug' if ENV['DEBUG']
10
10
  begin; require 'memory'; rescue LoadError; end
11
11
 
12
12
  puts `uname -a`
13
+ puts `ruby -v`
14
+ puts `env | egrep '^RUBY'`
13
15
  puts "Ruby #{RUBY_VERSION}p#{RUBY_PATCHLEVEL}"
14
16
 
15
17
  [ ["memcached", "memcached"],
16
18
  ["remix-stash", "remix/stash"],
17
19
  # ["astro-remcached", "remcached"], # Clobbers the "Memcached" constant
18
20
  ["memcache-client", "memcache"],
21
+ ["kgio", "kgio"],
19
22
  ["dalli","dalli"]].each do |gem_name, requirement|
20
23
  require requirement
21
24
  gem gem_name
@@ -121,9 +124,9 @@ class Bench
121
124
  begin
122
125
  yield client
123
126
  @benchmark.report("#{test_name}: #{client_name}") { @loops.times { yield client } }
124
- rescue => e
125
- # puts "#{test_name}:#{client_name} => #{e.inspect}"
126
- # reset_clients
127
+ rescue Exception => e
128
+ puts "#{test_name}:#{client_name} => #{e.inspect}"
129
+ reset_clients
127
130
  end
128
131
  end
129
132
  puts
@@ -1046,6 +1046,30 @@ class MemcachedTest < Test::Unit::TestCase
1046
1046
  socket.close
1047
1047
  end
1048
1048
 
1049
+ def test_wrong_failure_counter
1050
+ cache = Memcached.new(
1051
+ [@servers.last],
1052
+ :prefix_key => @prefix_key,
1053
+ :auto_eject_hosts => true,
1054
+ :server_failure_limit => 1,
1055
+ :retry_timeout => 1,
1056
+ :hash_with_prefix_key => false,
1057
+ :hash => :md5,
1058
+ :exception_retry_limit => 0
1059
+ )
1060
+
1061
+ # This is an abuse of knowledge, but it's necessary to verify that
1062
+ # the library is handling the counter properly.
1063
+ struct = cache.instance_variable_get(:@struct)
1064
+ server = Memcached::Lib.memcached_server_by_key(struct, "marmotte").first
1065
+
1066
+ # set to ensure connectivity
1067
+ cache.set("marmotte", "milk")
1068
+ server.server_failure_counter = 0
1069
+ cache.quit
1070
+ assert_equal 0, server.server_failure_counter
1071
+ end
1072
+
1049
1073
  def test_missing_server
1050
1074
  cache = Memcached.new(
1051
1075
  [@servers.last, 'localhost:43041'],
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: memcached
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 29
4
5
  prerelease: false
5
6
  segments:
6
7
  - 1
7
8
  - 0
8
- - 2
9
- version: 1.0.2
9
+ - 5
10
+ version: 1.0.5
10
11
  platform: ruby
11
12
  authors:
12
13
  - Evan Weaver
@@ -35,7 +36,7 @@ cert_chain:
35
36
  yZ0=
36
37
  -----END CERTIFICATE-----
37
38
 
38
- date: 2010-10-28 00:00:00 -07:00
39
+ date: 2011-01-27 00:00:00 -08:00
39
40
  default_executable:
40
41
  dependencies: []
41
42
 
@@ -71,6 +72,7 @@ files:
71
72
  - ext/libmemcached-3.patch
72
73
  - ext/libmemcached-4.patch
73
74
  - ext/libmemcached-5.patch
75
+ - ext/libmemcached-6.patch
74
76
  - ext/libmemcached.patch
75
77
  - ext/rlibmemcached.i
76
78
  - ext/rlibmemcached_wrap.c
@@ -83,6 +85,7 @@ files:
83
85
  - lib/memcached/integer.rb
84
86
  - lib/memcached/memcached.rb
85
87
  - lib/memcached/rails.rb
88
+ - memcached.gemspec
86
89
  - test/profile/benchmark.rb
87
90
  - test/profile/profile.rb
88
91
  - test/profile/valgrind.rb
@@ -93,7 +96,6 @@ files:
93
96
  - test/unit/memcached_experimental_test.rb
94
97
  - test/unit/memcached_test.rb
95
98
  - test/unit/rails_test.rb
96
- - memcached.gemspec
97
99
  has_rdoc: true
98
100
  homepage: http://blog.evanweaver.com/files/doc/fauna/memcached/
99
101
  licenses: []
@@ -114,6 +116,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
116
  requirements:
115
117
  - - ">="
116
118
  - !ruby/object:Gem::Version
119
+ hash: 3
117
120
  segments:
118
121
  - 0
119
122
  version: "0"
@@ -122,6 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
125
  requirements:
123
126
  - - ">="
124
127
  - !ruby/object:Gem::Version
128
+ hash: 11
125
129
  segments:
126
130
  - 1
127
131
  - 2
metadata.gz.sig CHANGED
Binary file