363 lines
14 KiB
Plaintext
363 lines
14 KiB
Plaintext
|
Sun, 27 Nov 2011 18:15:32 -0700 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Bug #745633: Values of maximum size are not stored
|
||
|
API inconsistency, max value length was tested for <= while max KEY
|
||
|
length was <. So I picked that keys and values *LONGER* than the
|
||
|
specified max value are what is used, and added documentation and tests
|
||
|
to that effect. The test for max value tested that length plus 4, so
|
||
|
I've changed that to be that value plus 1. Issue found by matt-quru.
|
||
|
|
||
|
* Bug #713488: Issues Invalid "delete" command.
|
||
|
Protocol has changed so that the "delete" operation no longer takes a
|
||
|
"time" argument. It seems that some servers will refuse a "delete key
|
||
|
0" while others will accept it, but the official server will NOT accept
|
||
|
"delete key 1". So I've changed it so that if no "time" argument is
|
||
|
specified, no time argument is sent to the server.
|
||
|
|
||
|
* Bug #713451: server.expect("END") needs to be in a finally block
|
||
|
Expect an "END" when the _recv_value() raises an exception.
|
||
|
Patch by Jay Farrimond.
|
||
|
|
||
|
* Bug: #741090: cas cache can grow unbounded. Default now is that the
|
||
|
cache is not used, unless the "Client()" object is created with
|
||
|
"cache_cas=True". In that case, you need to have your own cas clearing
|
||
|
code, a simple one would be to use Client().reset_cas() to completely
|
||
|
clear the cas_ids cache. Problem pointed out by Shaun Cutts.
|
||
|
|
||
|
* Bug #728359: Make python-memcache work on memcache restarts.
|
||
|
Patch by Tarek Ziade', reviewed and further patches submitted by Hugo
|
||
|
Beauze'e-Luysse and Neganov Alexandr.
|
||
|
|
||
|
* Bug #798342: If memcached server sends unknown flag in response for
|
||
|
"get", results in:
|
||
|
"UnboundLocalError: local variable 'val' referenced before assignment"
|
||
|
Now returns "None" instead. Patch by Sharoon Thomas
|
||
|
|
||
|
Mon, 20 Dec 2010 19:14:17 -0700 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Bug #680359: useOldServerHashFunction() is broken. It now correctly
|
||
|
switches back to the old memcache hash function.
|
||
|
|
||
|
Thu, 16 Dec 2010 02:07:40 -0700 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Bug #471727: Changed the delete() code to explicitly check for both
|
||
|
NOT_FOUND and DELETED as the responses and return successful for both.
|
||
|
It also logs an error if one of these two responses is not found.
|
||
|
Also added a test to ensure that delete() works.
|
||
|
|
||
|
* When using set_multi and one value is too big, traceback
|
||
|
TypeError: 'int' object is unsubscriptable
|
||
|
Patch by Orjan Persson
|
||
|
|
||
|
* Fixing Bug #529855: Server host can now be bare host without ":<port>".
|
||
|
Fix proposed by Roger Binns.
|
||
|
|
||
|
* Fixing Bug #491164: Typo fix, "compession" -> "compRession".
|
||
|
|
||
|
* Fixing Bug #509712: "TypeError: 'NoneType' object is unsubscriptable"
|
||
|
Also fixed some other similar code to not have issues with that.
|
||
|
|
||
|
* Also related to 509712 and 628339: readline() now returns '' instead
|
||
|
of None when a server dies. This should be safer. Patch suggested by
|
||
|
Denis Otkidach.
|
||
|
|
||
|
* Fixing Bug #628339: Read from server sometimes fails. Patch by Jeremy
|
||
|
Cowles.
|
||
|
|
||
|
* Fixing Bug #633553: Add stat arguments support to get_stats(). Patch
|
||
|
by Ryan Lane.
|
||
|
|
||
|
* Changing the license to the PSF License.
|
||
|
|
||
|
* Removing Evan's e-mail address at his request, changing authorship to
|
||
|
Sean.
|
||
|
|
||
|
Sat, 28 Nov 2009 01:07:42 -0700 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Version 1.45
|
||
|
|
||
|
* Per-connection max server key length. Patch by Nicolas Delaby
|
||
|
|
||
|
* Patches to make memcached more garbage-collectable. Removes
|
||
|
"debugfunc" argument from _Host objects and changed to "debug"
|
||
|
boolean. Patches by John McFarlane and Aryeh Katz.
|
||
|
|
||
|
* Switching to a cmemcache compatible hash function. Implemented by
|
||
|
André Cru and Ludvig Ericson. To switch back to the old style, use:
|
||
|
|
||
|
memcached.useOldServerHashFunction()
|
||
|
|
||
|
* Rejecting keys that have spaces in them. Patch by Etienne Posthumus.
|
||
|
|
||
|
* Fixing exception raising syntax. Patch by Samuel Stauffer.
|
||
|
|
||
|
* Optimizations in read code. Patch by Samuel Stauffer.
|
||
|
|
||
|
* Changing classes to be newstyle. Patch by Samuel Stauffer.
|
||
|
|
||
|
* Changed "has_key" to "in". Patch by Samuel Stauffer.
|
||
|
|
||
|
* incr/decr were raising ValueError if the key did not exist, the
|
||
|
docstring said it returned none. Patch by Chihiro Sakatoku.
|
||
|
|
||
|
* Adding cas method, submitted by Ben Gutierrez.
|
||
|
|
||
|
* Fix in the docstring for how to use the "set" method. Found and fixed
|
||
|
by William McVey
|
||
|
|
||
|
Thu, 02 Apr 2009 13:37:49 -0600 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Version 1.44
|
||
|
|
||
|
* Allowing spaces in the key. (Patch provided by xmm on Launchpad)
|
||
|
|
||
|
* Detecting when the pickler needs a positional argument. (Patch
|
||
|
provided by Brad Clements on Launchpad)
|
||
|
|
||
|
* Moving length check after the compression. (Patch provided by user
|
||
|
Tom on Launchpad)
|
||
|
|
||
|
* Fixing arguments passed to the _Error if invalid read length.
|
||
|
|
||
|
* Fixing the representation of domain sockets. (Patch provided by user
|
||
|
MTB on Launchpad)
|
||
|
|
||
|
* Changing a typo of dead_until. (Patch provided by Shane R. Spencer)
|
||
|
|
||
|
* Providing better error messages (patch provided by Johan Euphrosine).
|
||
|
|
||
|
* Adding get_slabs() function to get stats. (Patch provided
|
||
|
by Nick Verbeck)
|
||
|
|
||
|
Sun, 01 Jun 2008 15:05:11 -0600 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Version 1.43
|
||
|
|
||
|
* eliott reported a bug in the 1.42 related to the socket timeout code
|
||
|
causing a traceback due to the timeout value not being set.
|
||
|
|
||
|
Sat, 31 May 2008 02:09:17 -0600 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Version 1.42
|
||
|
|
||
|
* Paul Hummer set up a Launchpad project which I'm going to start using
|
||
|
to track patches and allow users to set up their own bzr branches and
|
||
|
manage marging in the upstream patches with their own.
|
||
|
|
||
|
https://launchpad.net/python-memcached
|
||
|
|
||
|
* Patch from Jehiah Czebotar which does: Changing the calls to
|
||
|
mark_dead() to make them dereference tuples, reducing timeout on
|
||
|
sockets to 3 seconds, settable via setting Host._SOCKET_TIMEOUT.
|
||
|
|
||
|
* Patches from Steve Schwarz for set_multi() to return the full set of
|
||
|
keys if all servers are down. Previously would not report any keys.
|
||
|
|
||
|
* Fix from Steve Schwarz delete_multi() argument "seconds" not being
|
||
|
correctly handled. Changed it to "time" to match all other calls.
|
||
|
|
||
|
* Patch from Peter Wilkinson to support using unix domain sockets.
|
||
|
He reports that tests succeed with with memcached daemons running,
|
||
|
the normal and a domain socket started via
|
||
|
"memcached -s memcached.socket". I massaged it quite a bit.
|
||
|
|
||
|
To use domain sockets, use a connect string of "unix:/path/to/socket"
|
||
|
Note however that if you are using a host name of "unix", it will now
|
||
|
detect "unix:11211" as being a domain socket with the name "11211".
|
||
|
In this case, please use "inet:unix:11211".
|
||
|
|
||
|
Because of this, it is now preferred to use a connect string prefix
|
||
|
of "inet:" or "unix:".
|
||
|
|
||
|
Tue, 29 Apr 2008 21:03:53 -0600 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Version 1.41
|
||
|
|
||
|
* Patch from Jehiah Czebotar to catch an additional server disconnect
|
||
|
situation.
|
||
|
|
||
|
* Patch from Andrey Petrov to add the "append" and "replace" commands.
|
||
|
|
||
|
Tue, 18 Sep 2007 20:52:09 -0600 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Version 1.40
|
||
|
|
||
|
* Updated setup.py file that uses distutils provided by Kai Lautaportti.
|
||
|
|
||
|
* Prevent keys from containing ASCII character 127 as well, patch provided
|
||
|
by Philip Neustrom.
|
||
|
|
||
|
* Added ability to overload the persistent_load/id, patch provided by
|
||
|
Steve Schwarz.
|
||
|
|
||
|
* Fixed ability to pass (server_hash,key) in place of key in Client.set()
|
||
|
Reported by Alexander Klyuev.
|
||
|
|
||
|
Tue, 14 Aug 2007 14:43:27 -0600 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Version 1.39
|
||
|
|
||
|
* Michael Krause reports the previous version doesn't work for
|
||
|
_val_to_store_info() calls because it's defined as a staticmethod.
|
||
|
Removing staticmethod decorator. Also confirmed by Kai Lautaportti,
|
||
|
with suggested fix of removing staticmethod.
|
||
|
|
||
|
Fri, 10 Aug 2007 17:50:13 -0600 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Version 1.38
|
||
|
|
||
|
* Matt McClanahan submitted a patch that allow add() to have a
|
||
|
min_compress_len argument.
|
||
|
|
||
|
* Steve Schwarz submitted a patch allowing user-defined picklers.
|
||
|
|
||
|
* Michael Krause suggested checking the return value to prevent an
|
||
|
exception from being raised in _set() when a value is too large to be
|
||
|
stored.
|
||
|
|
||
|
Fri, 27 Jul 2007 01:55:48 -0600 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Version 1.37
|
||
|
|
||
|
* Fixing call from add() to _set() with parameter for min_compress_len.
|
||
|
Reported by Jeff Fisher.
|
||
|
|
||
|
Thu, 07 Jun 2007 04:10:31 -0600 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Version 1.36
|
||
|
|
||
|
* Patch by Dave St.Germain to make the Client() class sub-class
|
||
|
threadlocal to help with multi-threading issues. Only available in
|
||
|
Python 2.4 and above.
|
||
|
|
||
|
* Patch by James Robinson with:
|
||
|
1) new set_multi method.
|
||
|
2) factored out determining the flags, length, and value to store
|
||
|
from set() into method _val_to_store_info() for use by both set()
|
||
|
and set_multi().
|
||
|
3) send_cmds() method on host which doesn't apply the trailing '\r\n'
|
||
|
for use by set_multi.
|
||
|
4) check_key() extended a bit to allow for testing the prefix passed
|
||
|
to set_multi just once, not once per each key.
|
||
|
5) Patch also enables support for auto compression in set, set_multi,
|
||
|
and replace.
|
||
|
|
||
|
* Suggestion by Helge Tesdal, fixes in check_key for non-string keys.
|
||
|
|
||
|
* NOTE: On a farm of clients with multiple servers, all clients will
|
||
|
need to be upgraded to this version. The next patch changes the
|
||
|
server hash.
|
||
|
|
||
|
* Philip Neustrom supplied a patch to change the server hash function to
|
||
|
binascii.crc32. The original "hash()" call is not cross-platform, so
|
||
|
big and little endian systems accessing the same memcache may end up
|
||
|
hitting different servers. Restore the old functionality by calling:
|
||
|
"memcached.serverHashFunction = hash" after importing memcache.
|
||
|
|
||
|
* Philip Neustrom points out that passing Unicode keys or values causes
|
||
|
problems because len(key) or len(value) is not equal to the number of
|
||
|
bytes that are required to store the key/value. Philip provides a
|
||
|
patch which raises an exception in this case. Raises
|
||
|
memcache.Client.MemcachedStringEncodingError exception in this case.
|
||
|
|
||
|
* NOTE: If you recompiled memcached to increase the default 1MB max
|
||
|
value size, you will need to call "memcached.MAX_SERVER_VALUE_LENGTH = N"
|
||
|
or memcached will not store values larger than the default 1MB.
|
||
|
|
||
|
* Philip Neustrom includes another patch which checks that the key
|
||
|
doesn't exceed the memcache server's max size. If it does, the item
|
||
|
is silently not stored.
|
||
|
|
||
|
* Philip Neustrom added a bunch of sanity checks.
|
||
|
|
||
|
* Jehiah Czebotar provided a patch to make the add() and replace()
|
||
|
functions return 0 when the add or replace fails, similar to how set()
|
||
|
works.
|
||
|
|
||
|
Sat, 16 Sep 2006 18:31:46 -0600 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Version 1.34
|
||
|
|
||
|
* In get_multi, if the recv loop reads 0 bytes, raising an EOFError.
|
||
|
Identified by Jim Baker.
|
||
|
|
||
|
Tue, 05 Sep 2006 14:06:50 -0600 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Version 1.33
|
||
|
|
||
|
* Including patch from Yoshinori K. Okuji to read in larger chunks for
|
||
|
readline() calls. This should dramatically improve performance under
|
||
|
some circumstances.
|
||
|
|
||
|
Sun, 03 Sep 2006 14:02:03 -0600 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Version 1.32
|
||
|
|
||
|
* Including patch from Philip Neustrom which checks keys sent to the
|
||
|
server for length and bad characters.
|
||
|
|
||
|
Sat, 20 May 2006 14:51:28 -0600 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Version 1.31
|
||
|
|
||
|
* Rolled version 1.30 since the Danga folks are now listing this
|
||
|
version as the official version. Removing the "tummy" from the version
|
||
|
number, and incrementing so that it's clear it's more recent than "1.2".
|
||
|
|
||
|
* Patch applied from Simon Forman for handling of weighted hosts.
|
||
|
|
||
|
* Added a little more meat to the README.
|
||
|
|
||
|
Sat, 28 Jan 2006 15:59:50 -0700 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* cludwin at socallocal suggested that the write-combining with
|
||
|
sendall() may not be beneficial. After testing on both SMP and non-SMP
|
||
|
machines, I can't see a significant benefit to not doing the
|
||
|
write-combining, even on large strings. The benefits of write-combining
|
||
|
on smaller strings seems to be significant on UP machines in tight loops.
|
||
|
Even on strings that are larger than 2MB, there seems to be no benefit to
|
||
|
splitting out the writes.
|
||
|
|
||
|
Sun, 18 Sep 2005 18:56:31 -0600 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Changing a printf to debuglog and catching a pickle exception, patch
|
||
|
submitted by Justin Azoff.
|
||
|
|
||
|
Thu, 14 Jul 2005 11:17:30 -0700 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Alex Stapleton found that the sendall call was slow for writing data
|
||
|
larger than several kilobytes. I had him test a change to his patch,
|
||
|
which worked as well, but was simpler. The code now does two sendall
|
||
|
calls, one for the data and one for the line termination, if the data is
|
||
|
larger than 100 bytes.
|
||
|
|
||
|
Thu, 7 Apr 2005 14:45:44 -0700 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Incorporating some fixes to get_multi() from Bo Yang
|
||
|
|
||
|
Mon, 13 Dec 2004 02:35:17 -0700 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Simplifying the readline() function and speeding it up ~25%.
|
||
|
* Fixing a bug in readline() if the server drops, mark_dead() was not
|
||
|
being properly called.
|
||
|
|
||
|
Sun, 12 Dec 2004 18:56:33 -0700 Sean Reifschneider <jafo@tummy.com>
|
||
|
|
||
|
* Adding "stats()" and "flush_all()" methods.
|
||
|
|
||
|
Thu, 10 Aug 2003 12:17:50 -0700 Evan Martin <martine@danga.com>
|
||
|
|
||
|
* Slightly more verbose self-test output.
|
||
|
* Fix mark_dead() to use proper classname.
|
||
|
* Make pooltest.py run from the test directory.
|
||
|
|
||
|
Thu, 07 Aug 2003 16:32:32 -0700 Evan Martin <martine@danga.com>
|
||
|
|
||
|
* Add incr, decr, and delete.
|
||
|
* Better Python (based on comments from Uriah Welcome).
|
||
|
* Docs, using epydoc.
|
||
|
|
||
|
Thu, 07 Aug 2003 14:20:27 -0700 Evan Martin <martine@danga.com>
|
||
|
|
||
|
* Initial prerelease.
|