My favorites | Sign in
Project Logo
                
Details: Show all Hide all

Today

  • 23 hours ago
    TestSuites Wiki page edited by dormando   -   Revision r432 "link" to internal test suite.
    Revision r432 "link" to internal test suite.

Last 7 days

  • Dec 23, 2009
    issue 117 (memcached 1.4.4 segfaults error 6 on CentOS 5.4 kernel2.6.18...) commented on by brandon.s.ramirez   -   This also occurs on RedHat ES5 (which makes sense since CentOS is based on RedHat ES). Kernel version: 2.6.18-92.1.6.el5xen #1 SMP This only occurs for me when the compile occurs on a 64-bit CPU. If I compile it on a 32-bit machine, the binary produced works just fine on both 64-bit and 32-bit machines. But a 64-bit binary runs on neither CPU.
    This also occurs on RedHat ES5 (which makes sense since CentOS is based on RedHat ES). Kernel version: 2.6.18-92.1.6.el5xen #1 SMP This only occurs for me when the compile occurs on a 64-bit CPU. If I compile it on a 32-bit machine, the binary produced works just fine on both 64-bit and 32-bit machines. But a 64-bit binary runs on neither CPU.
  • Dec 23, 2009
    issue 111 (compile errors: array subscript has type 'char') commented on by brandon.s.ramirez   -   This occurs in Cygwin as well. It occurs with at least 1.4.4 1.4.3.
    This occurs in Cygwin as well. It occurs with at least 1.4.4 1.4.3.
  • Dec 23, 2009
    issue 117 (memcached 1.4.4 segfaults error 6 on CentOS 5.4 kernel2.6.18...) reported by tacohamers   -   What steps will reproduce the problem? 1. ./configure --prefix= --exec-prefix=/usr --datarootdir=/usr/share (note not with 64 enable) 2. run "./memcached-debug -vvv -u nobody" 3. connect with telnet on port 11211 What is the expected output? What do you see instead? memcached segfaults on first connect attempt instead of displaying the telnet session in /var/log/messages kernel: memcached-debug[9024]: segfault at 0000000000000000 rip 0000000000400012 rsp 00007fff93258c08 error 6 What version of the product are you using? On what operating system? Running memcached 1.4.4 on 64bit CentOS 5.4 2.6.18 kernel Please provide any additional information below. The debug output when connecting with telnet; slab class 37: chunk size 315872 perslab 3 slab class 38: chunk size 394840 perslab 2 slab class 39: chunk size 493552 perslab 2 slab class 40: chunk size 616944 perslab 1 slab class 41: chunk size 771184 perslab 1 slab class 42: chunk size 1048576 perslab 1 <26 server listening (auto-negotiate) <27 send buffer was 129024, now 268435456 Segmentation fault
    What steps will reproduce the problem? 1. ./configure --prefix= --exec-prefix=/usr --datarootdir=/usr/share (note not with 64 enable) 2. run "./memcached-debug -vvv -u nobody" 3. connect with telnet on port 11211 What is the expected output? What do you see instead? memcached segfaults on first connect attempt instead of displaying the telnet session in /var/log/messages kernel: memcached-debug[9024]: segfault at 0000000000000000 rip 0000000000400012 rsp 00007fff93258c08 error 6 What version of the product are you using? On what operating system? Running memcached 1.4.4 on 64bit CentOS 5.4 2.6.18 kernel Please provide any additional information below. The debug output when connecting with telnet; slab class 37: chunk size 315872 perslab 3 slab class 38: chunk size 394840 perslab 2 slab class 39: chunk size 493552 perslab 2 slab class 40: chunk size 616944 perslab 1 slab class 41: chunk size 771184 perslab 1 slab class 42: chunk size 1048576 perslab 1 <26 server listening (auto-negotiate) <27 send buffer was 129024, now 268435456 Segmentation fault
  • Dec 21, 2009
    issue 116 (update doc/threads.txt) reported by mchun.li   -   What steps will reproduce the problem? 1.read doc/threads.txt to enable thread support 2../configure --enable-threads What is the expected output? What do you see instead? configure: WARNING: unrecognized options: --enable-threads What version of the product are you using? On what operating system? memcached-1.4.4 and git repo Please provide any additional information below. I looked at configure.ac, it seems multi-thread support is compiled in by default, no need to run ./configure --enable-threads, so doc/threads.txt should be updated.
    What steps will reproduce the problem? 1.read doc/threads.txt to enable thread support 2../configure --enable-threads What is the expected output? What do you see instead? configure: WARNING: unrecognized options: --enable-threads What version of the product are you using? On what operating system? memcached-1.4.4 and git repo Please provide any additional information below. I looked at configure.ac, it seems multi-thread support is compiled in by default, no need to run ./configure --enable-threads, so doc/threads.txt should be updated.

Last 30 days

  • Dec 17, 2009
    issue 115 (item_size_ok doesn't account for CAS) reported by gmitch   -   What steps will reproduce the problem? found by code inspection What is the expected output? What do you see instead? if CAS is in use, the total passed in to slabs_clsid should be sizeof(uin64_t) greater. What version of the product are you using? On what operating system? git master Please provide any additional information below.
    What steps will reproduce the problem? found by code inspection What is the expected output? What do you see instead? if CAS is in use, the total passed in to slabs_clsid should be sizeof(uin64_t) greater. What version of the product are you using? On what operating system? git master Please provide any additional information below.
  • Dec 15, 2009
    TutorialCachingStory (This is a story of Caching) Wiki page commented on by xmartinj   -   What if I don't have a frong page... will it still work? ;-)
    What if I don't have a frong page... will it still work? ;-)
  • Dec 15, 2009
    TutorialCachingStory (This is a story of Caching) Wiki page commented on by jayarjo   -   And me too :)
    And me too :)
  • Dec 14, 2009
    FAQ (Frequently Asked Questions) Wiki page commented on by waqasn...@hotmail.com   -   Hi All, Use of caching solutions to overcome issues like Scalability and Reliability is the need of the hour. I have found some very good read on internet which talks about the different caching solution. <a href="http://www.alachisoft.com/ncache/index.html">This article</a> not only talks about the different caching solutions but it also throws a brief light on its appliance for Memcached. I am sure you can get enough information from here Cheers,
    Hi All, Use of caching solutions to overcome issues like Scalability and Reliability is the need of the hour. I have found some very good read on internet which talks about the different caching solution. <a href="http://www.alachisoft.com/ncache/index.html">This article</a> not only talks about the different caching solutions but it also throws a brief light on its appliance for Memcached. I am sure you can get enough information from here Cheers,
  • Dec 13, 2009
    TutorialCachingStory (This is a story of Caching) Wiki page commented on by zAn0TheRz   -   Thank you for this great story. Now, i get it ;)
    Thank you for this great story. Now, i get it ;)
  • Dec 13, 2009
    TutorialCachingStory (This is a story of Caching) Wiki page commented on by zAn0TheRz   -   Thank you for this great store. Now, i get it ;)
    Thank you for this great store. Now, i get it ;)
  • Dec 13, 2009
    TutorialCachingStory (This is a story of Caching) Wiki page commented on by zAn0TheRz   -   Cool, thank you for this great story ;) Now, i get it!
    Cool, thank you for this great story ;) Now, i get it!
  • Dec 11, 2009
    issue 114 (Multi Set for Client in C#) Status changed by dsallings   -   I'm not sure what all of this is, but it's not part of the memcached server. Perhaps you meant to file a bug against whatever client it is that you're using.
    Status: Invalid
    I'm not sure what all of this is, but it's not part of the memcached server. Perhaps you meant to file a bug against whatever client it is that you're using.
    Status: Invalid
  • Dec 11, 2009
    issue 114 (Multi Set for Client in C#) reported by ratneshsinghparihar   -   /// <summary> /// This Method is resposible for serializing of a data . /// It does compression if required. /// </summary> /// <param name="obj">object to serialize. </param> /// <param name="key">key to save</param> /// <param name="val">serialized data in byte array</param> /// <param name="length">length in cache</param> /// <param name="flags">corresposnding falg after serialization.</param> /// <param name="asString"></param> /// <returns></returns> private bool SerializeData(object obj, string key, out byte[] val,out int length, out int flags, bool asString) { length = 0; flags = 0; val = new byte[0]; if (NativeHandler.IsHandled(obj)) { if (asString) { if (obj != null) { if (log.IsInfoEnabled) { log.Info(GetLocalizedString("set store data as string").Replace("$$Key$$", key).Replace("$$Class$$", obj.GetType().Name)); } try { val = UTF8Encoding.UTF8.GetBytes(obj.ToString ()); length = val.Length; } catch (ArgumentException ex) { if (log.IsErrorEnabled) { log.Error(GetLocalizedString("set invalid encoding").Replace("$$Encoding$$", _defaultEncoding), ex); } return false; } } else { val = new byte[0]; length = 0; } } else { if (log.IsInfoEnabled) { log.Info(GetLocalizedString("set store with native handler")); } try { val = NativeHandler.Encode(obj); length = val.Length; } catch (ArgumentException e) { if (log.IsErrorEnabled) { log.Error(GetLocalizedString("set failed to native handle object"), e); } return false; } } } else { if (obj != null) { if (log.IsInfoEnabled) { log.Info(GetLocalizedString("set serializing".Replace("$$Key$$", key).Replace("$$Class$$", obj.GetType ().Name))); } // always serialize for non-primitive types try { MemoryStream memStream = new MemoryStream(); new BinaryFormatter().Serialize(memStream, obj); val = memStream.GetBuffer(); length = (int)memStream.Length; flags |= F_SERIALIZED; } catch (IOException e) { // if we fail to serialize, then // we bail if (log.IsErrorEnabled) { log.Error(GetLocalizedString("set failed to serialize").Replace("$$Object$$", obj.ToString()), e); } // return socket to pool and bail return false; } } else { val = new byte[0]; length = 0; } } // now try to compress if we want to // and if the length is over the threshold if (_compressEnable && length > _compressThreshold) { if (log.IsInfoEnabled) { log.Info(GetLocalizedString("set trying to compress data")); log.Info(GetLocalizedString("set size prior").Replace ("$$Size$$", length.ToString(new NumberFormatInfo()))); } try { MemoryStream memoryStream = new MemoryStream(); GZipOutputStream gos = new GZipOutputStream (memoryStream); gos.Write(val, 0, length); gos.Finish(); // store it and set compression flag val = memoryStream.GetBuffer(); length = (int)memoryStream.Length; flags |= F_COMPRESSED; if (log.IsInfoEnabled) { log.Info(GetLocalizedString("set compression success").Replace("$$Size$$", length.ToString(new NumberFormatInfo()))); } } catch (IOException e) { if (log.IsErrorEnabled) { log.Error(GetLocalizedString("set compression failure"), e); } } } return true; } /// <summary> /// Stores data to cache. /// /// If data does not already exist for this key on the server, or if the key is being /// deleted, the specified value will not be stored. /// The server will automatically delete the value when the expiration time has been reached. /// /// If compression is enabled, and the data is longer than the compression threshold /// the data will be stored in compressed form. /// /// As of the current release, all objects stored will use .NET serialization. /// </summary> /// <param name="cmdname">action to take (set, add, replace) </param> /// <param name="keys">keys to store cache under</param> /// <param name="values">objects to cache</param> /// <param name="expiry">expiration</param> /// <param name="hashCode">if not null, then the int hashcode to use</param> /// <param name="asString">store this object as a string?</param> /// <returns>true/false indicating success</returns> private bool Set(string cmdname, string[] keys, object[] objs, DateTime expiry, object hashCode, bool asString) { if (expiry < DateTime.Now) return true; if (cmdname == null || cmdname.Trim().Length == 0 || keys == null || keys.Length == 0) { if (log.IsErrorEnabled) { log.Error(GetLocalizedString("set key null")); } return false; } // get SockIO obj SockIO sock = SockIOPool.GetInstance(_poolName).GetSock(keys [0], hashCode); if (sock == null) return false; if (expiry == DateTime.MaxValue) expiry = new DateTime(0); // store flags int flags = 0; int keyCounter = 0; // byte array to hold data byte[] val; int length = 0; foreach (object obj in objs) { string key = keys[keyCounter++]; if (!SerializeData(obj, key, out val,out length, out flags, asString)) { sock.Close(); sock = null; return false; } string cmd = cmdname + " " + key + " " + flags + " " + GetExpirationTime(expiry) + " " + length + "\r\n"; sock.Write(UTF8Encoding.UTF8.GetBytes(cmd)); sock.Write(val,0,length); sock.Write(UTF8Encoding.UTF8.GetBytes("\r\n")); } try { sock.Flush(); // get result code string line = sock.ReadLine(); if (log.IsInfoEnabled) { log.Info(GetLocalizedString("set memcached command result").Replace("$$Cmd$$", "set").Replace("$$Line$$", line)); } if (STORED == line) { if (log.IsInfoEnabled) { log.Info(GetLocalizedString("set success").Replace ("$$Key$$", "Multi")); } sock.Close(); sock = null; return true; } else if (NOTSTORED == line) { if (log.IsInfoEnabled) { log.Info(GetLocalizedString("set not stored").Replace("$$Key$$", "Multi")); } } else { if (log.IsErrorEnabled) { log.Error(GetLocalizedString("set error").Replace ("$$Key$$", "Multi").Replace("$$Size$$", length.ToString(new NumberFormatInfo())).Replace("$$Line$$", line)); } } } catch (IOException e) { // exception thrown if (log.IsErrorEnabled) { log.Error(GetLocalizedString("set IOException"), e); } try { sock.TrueClose(); } catch (IOException ioe) { if (log.IsErrorEnabled) { log.Error(GetLocalizedString("failed to close some socket").Replace("$$Socket$$", sock.ToString()), ioe); } } sock = null; } if (sock != null) sock.Close(); return false; }
    /// <summary> /// This Method is resposible for serializing of a data . /// It does compression if required. /// </summary> /// <param name="obj">object to serialize. </param> /// <param name="key">key to save</param> /// <param name="val">serialized data in byte array</param> /// <param name="length">length in cache</param> /// <param name="flags">corresposnding falg after serialization.</param> /// <param name="asString"></param> /// <returns></returns> private bool SerializeData(object obj, string key, out byte[] val,out int length, out int flags, bool asString) { length = 0; flags = 0; val = new byte[0]; if (NativeHandler.IsHandled(obj)) { if (asString) { if (obj != null) { if (log.IsInfoEnabled) { log.Info(GetLocalizedString("set store data as string").Replace("$$Key$$", key).Replace("$$Class$$", obj.GetType().Name)); } try { val = UTF8Encoding.UTF8.GetBytes(obj.ToString ()); length = val.Length; } catch (ArgumentException ex) { if (log.IsErrorEnabled) { log.Error(GetLocalizedString("set invalid encoding").Replace("$$Encoding$$", _defaultEncoding), ex); } return false; } } else { val = new byte[0]; length = 0; } } else { if (log.IsInfoEnabled) { log.Info(GetLocalizedString("set store with native handler")); } try { val = NativeHandler.Encode(obj); length = val.Length; } catch (ArgumentException e) { if (log.IsErrorEnabled) { log.Error(GetLocalizedString("set failed to native handle object"), e); } return false; } } } else { if (obj != null) { if (log.IsInfoEnabled) { log.Info(GetLocalizedString("set serializing".Replace("$$Key$$", key).Replace("$$Class$$", obj.GetType ().Name))); } // always serialize for non-primitive types try { MemoryStream memStream = new MemoryStream(); new BinaryFormatter().Serialize(memStream, obj); val = memStream.GetBuffer(); length = (int)memStream.Length; flags |= F_SERIALIZED; } catch (IOException e) { // if we fail to serialize, then // we bail if (log.IsErrorEnabled) { log.Error(GetLocalizedString("set failed to serialize").Replace("$$Object$$", obj.ToString()), e); } // return socket to pool and bail return false; } } else { val = new byte[0]; length = 0; } } // now try to compress if we want to // and if the length is over the threshold if (_compressEnable && length > _compressThreshold) { if (log.IsInfoEnabled) { log.Info(GetLocalizedString("set trying to compress data")); log.Info(GetLocalizedString("set size prior").Replace ("$$Size$$", length.ToString(new NumberFormatInfo()))); } try { MemoryStream memoryStream = new MemoryStream(); GZipOutputStream gos = new GZipOutputStream (memoryStream); gos.Write(val, 0, length); gos.Finish(); // store it and set compression flag val = memoryStream.GetBuffer(); length = (int)memoryStream.Length; flags |= F_COMPRESSED; if (log.IsInfoEnabled) { log.Info(GetLocalizedString("set compression success").Replace("$$Size$$", length.ToString(new NumberFormatInfo()))); } } catch (IOException e) { if (log.IsErrorEnabled) { log.Error(GetLocalizedString("set compression failure"), e); } } } return true; } /// <summary> /// Stores data to cache. /// /// If data does not already exist for this key on the server, or if the key is being /// deleted, the specified value will not be stored. /// The server will automatically delete the value when the expiration time has been reached. /// /// If compression is enabled, and the data is longer than the compression threshold /// the data will be stored in compressed form. /// /// As of the current release, all objects stored will use .NET serialization. /// </summary> /// <param name="cmdname">action to take (set, add, replace) </param> /// <param name="keys">keys to store cache under</param> /// <param name="values">objects to cache</param> /// <param name="expiry">expiration</param> /// <param name="hashCode">if not null, then the int hashcode to use</param> /// <param name="asString">store this object as a string?</param> /// <returns>true/false indicating success</returns> private bool Set(string cmdname, string[] keys, object[] objs, DateTime expiry, object hashCode, bool asString) { if (expiry < DateTime.Now) return true; if (cmdname == null || cmdname.Trim().Length == 0 || keys == null || keys.Length == 0) { if (log.IsErrorEnabled) { log.Error(GetLocalizedString("set key null")); } return false; } // get SockIO obj SockIO sock = SockIOPool.GetInstance(_poolName).GetSock(keys [0], hashCode); if (sock == null) return false; if (expiry == DateTime.MaxValue) expiry = new DateTime(0); // store flags int flags = 0; int keyCounter = 0; // byte array to hold data byte[] val; int length = 0; foreach (object obj in objs) { string key = keys[keyCounter++]; if (!SerializeData(obj, key, out val,out length, out flags, asString)) { sock.Close(); sock = null; return false; } string cmd = cmdname + " " + key + " " + flags + " " + GetExpirationTime(expiry) + " " + length + "\r\n"; sock.Write(UTF8Encoding.UTF8.GetBytes(cmd)); sock.Write(val,0,length); sock.Write(UTF8Encoding.UTF8.GetBytes("\r\n")); } try { sock.Flush(); // get result code string line = sock.ReadLine(); if (log.IsInfoEnabled) { log.Info(GetLocalizedString("set memcached command result").Replace("$$Cmd$$", "set").Replace("$$Line$$", line)); } if (STORED == line) { if (log.IsInfoEnabled) { log.Info(GetLocalizedString("set success").Replace ("$$Key$$", "Multi")); } sock.Close(); sock = null; return true; } else if (NOTSTORED == line) { if (log.IsInfoEnabled) { log.Info(GetLocalizedString("set not stored").Replace("$$Key$$", "Multi")); } } else { if (log.IsErrorEnabled) { log.Error(GetLocalizedString("set error").Replace ("$$Key$$", "Multi").Replace("$$Size$$", length.ToString(new NumberFormatInfo())).Replace("$$Line$$", line)); } } } catch (IOException e) { // exception thrown if (log.IsErrorEnabled) { log.Error(GetLocalizedString("set IOException"), e); } try { sock.TrueClose(); } catch (IOException ioe) { if (log.IsErrorEnabled) { log.Error(GetLocalizedString("failed to close some socket").Replace("$$Socket$$", sock.ToString()), ioe); } } sock = null; } if (sock != null) sock.Close(); return false; }
  • Dec 10, 2009
    Clients (Client API's / libraries) Wiki page edited by dsallings   -   Revision r431 Got a recommendation for echou's erlang client.
    Revision r431 Got a recommendation for echou's erlang client.
  • Dec 09, 2009
    issue 113 (Please add a new java memcached client) Status changed by eric.d.lambert   -  
    Status: Done
    Status: Done
  • Dec 09, 2009
    Clients (Client API's / libraries) Wiki page edited by eric.d.lambert   -   Revision r430 Edited wiki page through web user interface.
    Revision r430 Edited wiki page through web user interface.
  • Dec 09, 2009
    issue 113 (Please add a new java memcached client) Owner changed by eric.d.lambert   -  
    Owner: eric.d.lambert
    Owner: eric.d.lambert
  • Dec 09, 2009
    issue 113 (Please add a new java memcached client) reported by killme2008   -   Here is a new java memcached client http://code.google.com/p/xmemcached/ any body will add this client to wiki please? It has some difference features: 1.nio connection pool 2.supports talking with kestrel 3.weighted server and jmx etc.
    Here is a new java memcached client http://code.google.com/p/xmemcached/ any body will add this client to wiki please? It has some difference features: 1.nio connection pool 2.supports talking with kestrel 3.weighted server and jmx etc.
  • Dec 09, 2009
    issue 112 (Please add Erlang memcached client) commented on by higepon   -   Thanks. >In the meantime, having a comprehensive list of what's out there is useful. I agree.
    Thanks. >In the meantime, having a comprehensive list of what's out there is useful. I agree.
  • Dec 09, 2009
    issue 112 (Please add Erlang memcached client) changed by dsallings   -   Great, thanks. Hoping to get some of these clients corralled in a way as to make it clear which ones should be preferred over others. In the meantime, having a comprehensive list of what's out there is useful.
    Status: Fixed
    Owner: dsallings
    Great, thanks. Hoping to get some of these clients corralled in a way as to make it clear which ones should be preferred over others. In the meantime, having a comprehensive list of what's out there is useful.
    Status: Fixed
    Owner: dsallings
  • Dec 09, 2009
    Clients (Client API's / libraries) Wiki page edited by dsallings   -   Revision r429 Added higepon's erlang memcached client.
    Revision r429 Added higepon's erlang memcached client.
  • Dec 09, 2009
    issue 112 (Please add Erlang memcached client) reported by higepon   -   Will you please add my memcached client for Erlang to ht tp://code.google.com/p/memcached/wiki/Clients? http://github.com/higepon/memcached-client Cheers.
    Will you please add my memcached client for Erlang to ht tp://code.google.com/p/memcached/wiki/Clients? http://github.com/higepon/memcached-client Cheers.
  • Dec 08, 2009
    Clients (Client API's / libraries) Wiki page edited by dormando   -   Revision r428 For some reason I can't use svn to edit the damn wiki :/
    Revision r428 For some reason I can't use svn to edit the damn wiki :/
  • Dec 07, 2009
    issue 111 (compile errors: array subscript has type 'char') commented on by selsky   -   This is for memcached 1.4.4
    This is for memcached 1.4.4
  • Dec 07, 2009
    issue 111 (compile errors: array subscript has type 'char') reported by selsky   -   On Solaris 9-sparc: $ ./configure --with-libevent=/opt/local $ make [...] gcc -std=gnu99 -DHAVE_CONFIG_H -I. -DNDEBUG -I/opt/local/include -g -O2 -pthread -Wall -Werror -pedantic -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -MT memcached-util.o -MD -MP -MF .deps/memcached-util.Tpo -c -o memcached-util.o `test -f 'util.c' || echo './'`util.c cc1: warnings being treated as errors util.c: In function ‘safe_strtoull’: util.c:19: warning: array subscript has type ‘char’ util.c: In function ‘safe_strtoll’: util.c:42: warning: array subscript has type ‘char’ util.c: In function ‘safe_strtoul’: util.c:62: warning: array subscript has type ‘char’ util.c: In function ‘safe_strtol’: util.c:86: warning: array subscript has type ‘char’ make[2]: *** [memcached-util.o] Error 1 $ gcc --version gcc (GCC) 4.2.4 Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    On Solaris 9-sparc: $ ./configure --with-libevent=/opt/local $ make [...] gcc -std=gnu99 -DHAVE_CONFIG_H -I. -DNDEBUG -I/opt/local/include -g -O2 -pthread -Wall -Werror -pedantic -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -MT memcached-util.o -MD -MP -MF .deps/memcached-util.Tpo -c -o memcached-util.o `test -f 'util.c' || echo './'`util.c cc1: warnings being treated as errors util.c: In function ‘safe_strtoull’: util.c:19: warning: array subscript has type ‘char’ util.c: In function ‘safe_strtoll’: util.c:42: warning: array subscript has type ‘char’ util.c: In function ‘safe_strtoul’: util.c:62: warning: array subscript has type ‘char’ util.c: In function ‘safe_strtol’: util.c:86: warning: array subscript has type ‘char’ make[2]: *** [memcached-util.o] Error 1 $ gcc --version gcc (GCC) 4.2.4 Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  • Dec 04, 2009
    Clients (Client API's / libraries) Wiki page commented on by manifestinteractive   -   Good PHP Memcached Class: http://code.google.com/p/memcachemanager/ Supports key tagging and has great documentation. Class also generates memory usages reports, which have come in very handy. This page has been particularly helpful as it covers in plain English what all the memcached variables mean, and what they do. http://code.google.com/p/memcachemanager/wiki/Definitions
    Good PHP Memcached Class: http://code.google.com/p/memcachemanager/ Supports key tagging and has great documentation. Class also generates memory usages reports, which have come in very handy. This page has been particularly helpful as it covers in plain English what all the memcached variables mean, and what they do. http://code.google.com/p/memcachemanager/wiki/Definitions
  • Dec 03, 2009
    PHPClientComparison (Comparison of pecl/memcache and pecl/memcached) Wiki page commented on by nick.lemouton   -   Is pecl/memcache still being developed? There's been no new version since Feb 09 and the latest beta has a few show stopping bugs (the only version that works with the binary protocol).
    Is pecl/memcache still being developed? There's been no new version since Feb 09 and the latest beta has a few show stopping bugs (the only version that works with the binary protocol).
  • Dec 03, 2009
    TutorialCachingStory (This is a story of Caching) Wiki page commented on by yona...@epoch.co.il   -   hehehe, one of the best tutorial ever
    hehehe, one of the best tutorial ever
  • Dec 01, 2009
    issue 110 (method for extending the expiration of an item is needed) reported by ingenthr   -   There are current use cases where an application may "touch" an item by either getting it or updating it, and there is not currently a way to extend the expiration time. The server should add a new operation, touch (and perhaps a CAS equivalent), which allows a client to "touch" an item with a new expiration time, following the existing expiration rules. Following the existing ascii protocol: touch <key> <new exptime> [noreply] \r\n
    There are current use cases where an application may "touch" an item by either getting it or updating it, and there is not currently a way to extend the expiration time. The server should add a new operation, touch (and perhaps a CAS equivalent), which allows a client to "touch" an item with a new expiration time, following the existing expiration rules. Following the existing ascii protocol: touch <key> <new exptime> [noreply] \r\n
  • Nov 30, 2009
    issue 82 (run multiple instances of memcached on one server host) commented on by mailsort   -   I have 6 memcache servers running on my vps with different ports since 1.4.0. This is not a defect but your solution is elegant.
    I have 6 memcache servers running on my vps with different ports since 1.4.0. This is not a defect but your solution is elegant.
  • Nov 30, 2009
    HowToMonitor (Monitoring memcached) Wiki page commented on by CMPTuOMP3   -   Take a look at http://code.google.com/p/memcmon/. It's in curses. :)
    Take a look at http://code.google.com/p/memcmon/. It's in curses. :)
  • Nov 29, 2009
    Start (memcached Documentation) Wiki page commented on by jgoldsm...@gear6.com   -   what's the difference between Memcached distro from Danga and Gear6 web cache? it would be good if some pages here addressed this.
    what's the difference between Memcached distro from Danga and Gear6 web cache? it would be good if some pages here addressed this.
  • Nov 28, 2009
    TutorialCachingStory (This is a story of Caching) Wiki page commented on by peter.newhook   -   I get it.
    I get it.
  • Nov 26, 2009
    issue 108 (Add partial backwards compatibility for delete with timeout ...) Status changed by dsallings   -   This was fixed in 1.4.4.
    Status: Fixed
    This was fixed in 1.4.4.
    Status: Fixed
  • Nov 26, 2009
    memcached-1.4.4.tar.gz (Stable release 1.4.4) file uploaded by dormando   -  
    Labels: Featured Type-Source OpSys-All
    Labels: Featured Type-Source OpSys-All
  • Nov 26, 2009
    ReleaseNotes144 (Release Notes for Release 1.4.4) Wiki page added by dsallings   -   Revision r427 1.4.4 release notes.
    Revision r427 1.4.4 release notes.

Earlier this year

  • Nov 25, 2009
    issue 109 (efficient, rough top-N hot items) reported by steve.yen   -   A stats command enhancement that provides information on the hottest N keys/items in memcached would be useful. Here's one idea on how to get a rough snapshot of the hottest N items: we could do a scan from the head of the LRU lists, assuming that hotter items are often bumped to the front of these lists. (Well, at least every second or so, due to the ITEM_UPDATE_INTERVAL optimization.) A related idea, but possibly separate, would be to keep a per-item counter of the number of GET's that memcached has processed for an item. This would help make figuring out the hottest N items a little easier. To avoid taking more memory, we could consider reclaiming some bits from the item struct. The item struct has two 32-bit (rel_time_t) fields for time values... rel_time_t time; /* least recent access */ rel_time_t exptime; /* expire time */ We probably don't need all 64 bits for this information, and could use some of those bits for other things, such as a # of GET's counter.
    A stats command enhancement that provides information on the hottest N keys/items in memcached would be useful. Here's one idea on how to get a rough snapshot of the hottest N items: we could do a scan from the head of the LRU lists, assuming that hotter items are often bumped to the front of these lists. (Well, at least every second or so, due to the ITEM_UPDATE_INTERVAL optimization.) A related idea, but possibly separate, would be to keep a per-item counter of the number of GET's that memcached has processed for an item. This would help make figuring out the hottest N items a little easier. To avoid taking more memory, we could consider reclaiming some bits from the item struct. The item struct has two 32-bit (rel_time_t) fields for time values... rel_time_t time; /* least recent access */ rel_time_t exptime; /* expire time */ We probably don't need all 64 bits for this information, and could use some of those bits for other things, such as a # of GET's counter.
  • Nov 24, 2009
    issue 108 (Add partial backwards compatibility for delete with timeout ...) commented on by dsallings   -   I've pushed up an issue_108 branch that tests a few scenarios and makes sure they work. Specifically, you will find the following behavior: 1. "delete key 0" works 2. "delete key 1" (for any non-zero value) still does not work and errors appropriately 3. "delete key 0 noreply" works (and doesn't reply) 4. "delete key 1 noreply" (for any non-zero value) still does not work, but no long replies
    I've pushed up an issue_108 branch that tests a few scenarios and makes sure they work. Specifically, you will find the following behavior: 1. "delete key 0" works 2. "delete key 1" (for any non-zero value) still does not work and errors appropriately 3. "delete key 0 noreply" works (and doesn't reply) 4. "delete key 1 noreply" (for any non-zero value) still does not work, but no long replies
  • Nov 24, 2009
    issue 108 (Add partial backwards compatibility for delete with timeout ...) reported by dsallings   -   We have accidentally had some backwards compatibility for deletion with a timeout due to a bug ( bug3 ) in the protocol parser that was fixed in 1.4.3. Fixing this bug broke some clients that were always sending timeouts on deletes. We can add backwards compatibility specifically for a timeout value of 0, but for values other than 0 (i.e. you actually desire a lingered delete), the server will not perform as expected, so it will continue to tell you up front. This will be fixed in 1.4.4.
    We have accidentally had some backwards compatibility for deletion with a timeout due to a bug ( bug3 ) in the protocol parser that was fixed in 1.4.3. Fixing this bug broke some clients that were always sending timeouts on deletes. We can add backwards compatibility specifically for a timeout value of 0, but for values other than 0 (i.e. you actually desire a lingered delete), the server will not perform as expected, so it will continue to tell you up front. This will be fixed in 1.4.4.
  • Nov 16, 2009
    TutorialCachingStory (This is a story of Caching) Wiki page commented on by niallvomalley   -   Interesting story and solution, blankITsolution 2009
    Interesting story and solution, blankITsolution 2009
  • Nov 14, 2009
    issue 100 (1.4.x: t/binary.t fails on ARM hardware.) commented on by dsallings   -   I'm going to need a login on the box to proceed, I believe. I can't seem to get enough information just through buildbot.
    I'm going to need a login on the box to proceed, I believe. I can't seem to get enough information just through buildbot.
  • Nov 14, 2009
    issue 100 (1.4.x: t/binary.t fails on ARM hardware.) commented on by robb...@orbis-terrarum.net   -   dsallings: any progress on this?
    dsallings: any progress on this?
  • Nov 12, 2009
    issue 107 (binary protocol can only parse 1 command within a recieved u...) reported by mar...@hyves.nl   -   What steps will reproduce the problem? 1. compile attached code 2. start an empty memcached server with verbose (-vvv) with udp port 10000 3. run program against it. You will see that it processes both packages. 4. restart memcached and add the keys hello and world with random values. 5. rerun the program, it will only process the first packet and return. What is the expected output? What do you see instead? I expected to handle all commands in the packet. What version of the product are you using? On what operating system? memcached v1.4.3 on gentoo linux with kernel 2.6 and epoll. Please provide any additional information below. After some code reviewing I got it working through the attached patch. It's just a quick hack to test my clientside driver, I think a better solution can be made here. On top of that I think it should be way better to pack the responses as well. It uses 1 packet for each response even if there is room to fit in an other get response.
    What steps will reproduce the problem? 1. compile attached code 2. start an empty memcached server with verbose (-vvv) with udp port 10000 3. run program against it. You will see that it processes both packages. 4. restart memcached and add the keys hello and world with random values. 5. rerun the program, it will only process the first packet and return. What is the expected output? What do you see instead? I expected to handle all commands in the packet. What version of the product are you using? On what operating system? memcached v1.4.3 on gentoo linux with kernel 2.6 and epoll. Please provide any additional information below. After some code reviewing I got it working through the attached patch. It's just a quick hack to test my clientside driver, I think a better solution can be made here. On top of that I think it should be way better to pack the responses as well. It uses 1 packet for each response even if there is room to fit in an other get response.
  • Nov 12, 2009
    issue 106 (binary protocol parsing can cause memcached server lockup) reported by mar...@hyves.nl   -   What steps will reproduce the problem? 1. run a memcached server on localhost port 10000 2. compile and run the attached c code 3. change the len from 37 to 38 on line 69, recompile and run the code again. What is the expected output? What do you see instead? use top and watch the cpu stats for step 2 and 3. Even after stopping the programs from step 3 the memcached server is using 100% cpu. For step 2 and 3 I expect for the load to drop to 0 after stopping the program. What version of the product are you using? On what operating system? memcached v1.4.3 on linux 2.6 compiled libevent using epoll. Please provide any additional information below. The attached code currently be only compiled under linux 2.6 with epoll support. Please note that by changing the length of 37 to 38 bytes I broke the memcached binary spec intentionally. My point is that memcached should have better protocol handling to protect itself against faulty packets.
    What steps will reproduce the problem? 1. run a memcached server on localhost port 10000 2. compile and run the attached c code 3. change the len from 37 to 38 on line 69, recompile and run the code again. What is the expected output? What do you see instead? use top and watch the cpu stats for step 2 and 3. Even after stopping the programs from step 3 the memcached server is using 100% cpu. For step 2 and 3 I expect for the load to drop to 0 after stopping the program. What version of the product are you using? On what operating system? memcached v1.4.3 on linux 2.6 compiled libevent using epoll. Please provide any additional information below. The attached code currently be only compiled under linux 2.6 with epoll support. Please note that by changing the length of 37 to 38 bytes I broke the memcached binary spec intentionally. My point is that memcached should have better protocol handling to protect itself against faulty packets.
  • Nov 11, 2009
    FAQ (Frequently Asked Questions) Wiki page commented on by dorma...@rydia.net   -   Rabbits are (fast, `scalable`, stupid).
    Rabbits are (fast, `scalable`, stupid).
  • Nov 11, 2009
    FAQ (Frequently Asked Questions) Wiki page commented on by bain.kennedy   -   What's the deal with the Zombie Bunnies Logo on the main site?
    What's the deal with the Zombie Bunnies Logo on the main site?
  • Nov 11, 2009
    issue 105 (curr_items stats seem wrong) changed by dsallings   -   I was hoping this would be in the FAQ or described better in the protocol, but I couldn't find it. I'm going to reopen this as a documentation bug. Sorry for the confusion.
    Status: Accepted
    Labels: Component-Docs
    I was hoping this would be in the FAQ or described better in the protocol, but I couldn't find it. I'm going to reopen this as a documentation bug. Sorry for the confusion.
    Status: Accepted
    Labels: Component-Docs
  • Nov 11, 2009
    issue 105 (curr_items stats seem wrong) commented on by CMPTuOMP3   -   Thanks for the clarification.
    Thanks for the clarification.
  • Nov 11, 2009
    issue 105 (curr_items stats seem wrong) Status changed by dsallings   -   That is correct. There's no way to determine the exact value of curr_items without actually looking at the values since the expiration is lazy.
    Status: Invalid
    That is correct. There's no way to determine the exact value of curr_items without actually looking at the values since the expiration is lazy.
    Status: Invalid
 
Hosted by Google Code