1 | Sun, 27 Nov 2011 18:15:32 -0700 Sean Reifschneider <jafo@tummy.com> |
---|
2 | |
---|
3 | * Bug #745633: Values of maximum size are not stored |
---|
4 | API inconsistency, max value length was tested for <= while max KEY |
---|
5 | length was <. So I picked that keys and values *LONGER* than the |
---|
6 | specified max value are what is used, and added documentation and tests |
---|
7 | to that effect. The test for max value tested that length plus 4, so |
---|
8 | I've changed that to be that value plus 1. Issue found by matt-quru. |
---|
9 | |
---|
10 | * Bug #713488: Issues Invalid "delete" command. |
---|
11 | Protocol has changed so that the "delete" operation no longer takes a |
---|
12 | "time" argument. It seems that some servers will refuse a "delete key |
---|
13 | 0" while others will accept it, but the official server will NOT accept |
---|
14 | "delete key 1". So I've changed it so that if no "time" argument is |
---|
15 | specified, no time argument is sent to the server. |
---|
16 | |
---|
17 | * Bug #713451: server.expect("END") needs to be in a finally block |
---|
18 | Expect an "END" when the _recv_value() raises an exception. |
---|
19 | Patch by Jay Farrimond. |
---|
20 | |
---|
21 | * Bug: #741090: cas cache can grow unbounded. Default now is that the |
---|
22 | cache is not used, unless the "Client()" object is created with |
---|
23 | "cache_cas=True". In that case, you need to have your own cas clearing |
---|
24 | code, a simple one would be to use Client().reset_cas() to completely |
---|
25 | clear the cas_ids cache. Problem pointed out by Shaun Cutts. |
---|
26 | |
---|
27 | * Bug #728359: Make python-memcache work on memcache restarts. |
---|
28 | Patch by Tarek Ziade', reviewed and further patches submitted by Hugo |
---|
29 | Beauze'e-Luysse and Neganov Alexandr. |
---|
30 | |
---|
31 | * Bug #798342: If memcached server sends unknown flag in response for |
---|
32 | "get", results in: |
---|
33 | "UnboundLocalError: local variable 'val' referenced before assignment" |
---|
34 | Now returns "None" instead. Patch by Sharoon Thomas |
---|
35 | |
---|
36 | Mon, 20 Dec 2010 19:14:17 -0700 Sean Reifschneider <jafo@tummy.com> |
---|
37 | |
---|
38 | * Bug #680359: useOldServerHashFunction() is broken. It now correctly |
---|
39 | switches back to the old memcache hash function. |
---|
40 | |
---|
41 | Thu, 16 Dec 2010 02:07:40 -0700 Sean Reifschneider <jafo@tummy.com> |
---|
42 | |
---|
43 | * Bug #471727: Changed the delete() code to explicitly check for both |
---|
44 | NOT_FOUND and DELETED as the responses and return successful for both. |
---|
45 | It also logs an error if one of these two responses is not found. |
---|
46 | Also added a test to ensure that delete() works. |
---|
47 | |
---|
48 | * When using set_multi and one value is too big, traceback |
---|
49 | TypeError: 'int' object is unsubscriptable |
---|
50 | Patch by Orjan Persson |
---|
51 | |
---|
52 | * Fixing Bug #529855: Server host can now be bare host without ":<port>". |
---|
53 | Fix proposed by Roger Binns. |
---|
54 | |
---|
55 | * Fixing Bug #491164: Typo fix, "compession" -> "compRession". |
---|
56 | |
---|
57 | * Fixing Bug #509712: "TypeError: 'NoneType' object is unsubscriptable" |
---|
58 | Also fixed some other similar code to not have issues with that. |
---|
59 | |
---|
60 | * Also related to 509712 and 628339: readline() now returns '' instead |
---|
61 | of None when a server dies. This should be safer. Patch suggested by |
---|
62 | Denis Otkidach. |
---|
63 | |
---|
64 | * Fixing Bug #628339: Read from server sometimes fails. Patch by Jeremy |
---|
65 | Cowles. |
---|
66 | |
---|
67 | * Fixing Bug #633553: Add stat arguments support to get_stats(). Patch |
---|
68 | by Ryan Lane. |
---|
69 | |
---|
70 | * Changing the license to the PSF License. |
---|
71 | |
---|
72 | * Removing Evan's e-mail address at his request, changing authorship to |
---|
73 | Sean. |
---|
74 | |
---|
75 | Sat, 28 Nov 2009 01:07:42 -0700 Sean Reifschneider <jafo@tummy.com> |
---|
76 | |
---|
77 | * Version 1.45 |
---|
78 | |
---|
79 | * Per-connection max server key length. Patch by Nicolas Delaby |
---|
80 | |
---|
81 | * Patches to make memcached more garbage-collectable. Removes |
---|
82 | "debugfunc" argument from _Host objects and changed to "debug" |
---|
83 | boolean. Patches by John McFarlane and Aryeh Katz. |
---|
84 | |
---|
85 | * Switching to a cmemcache compatible hash function. Implemented by |
---|
86 | André Cru and Ludvig Ericson. To switch back to the old style, use: |
---|
87 | |
---|
88 | memcached.useOldServerHashFunction() |
---|
89 | |
---|
90 | * Rejecting keys that have spaces in them. Patch by Etienne Posthumus. |
---|
91 | |
---|
92 | * Fixing exception raising syntax. Patch by Samuel Stauffer. |
---|
93 | |
---|
94 | * Optimizations in read code. Patch by Samuel Stauffer. |
---|
95 | |
---|
96 | * Changing classes to be newstyle. Patch by Samuel Stauffer. |
---|
97 | |
---|
98 | * Changed "has_key" to "in". Patch by Samuel Stauffer. |
---|
99 | |
---|
100 | * incr/decr were raising ValueError if the key did not exist, the |
---|
101 | docstring said it returned none. Patch by Chihiro Sakatoku. |
---|
102 | |
---|
103 | * Adding cas method, submitted by Ben Gutierrez. |
---|
104 | |
---|
105 | * Fix in the docstring for how to use the "set" method. Found and fixed |
---|
106 | by William McVey |
---|
107 | |
---|
108 | Thu, 02 Apr 2009 13:37:49 -0600 Sean Reifschneider <jafo@tummy.com> |
---|
109 | |
---|
110 | * Version 1.44 |
---|
111 | |
---|
112 | * Allowing spaces in the key. (Patch provided by xmm on Launchpad) |
---|
113 | |
---|
114 | * Detecting when the pickler needs a positional argument. (Patch |
---|
115 | provided by Brad Clements on Launchpad) |
---|
116 | |
---|
117 | * Moving length check after the compression. (Patch provided by user |
---|
118 | Tom on Launchpad) |
---|
119 | |
---|
120 | * Fixing arguments passed to the _Error if invalid read length. |
---|
121 | |
---|
122 | * Fixing the representation of domain sockets. (Patch provided by user |
---|
123 | MTB on Launchpad) |
---|
124 | |
---|
125 | * Changing a typo of dead_until. (Patch provided by Shane R. Spencer) |
---|
126 | |
---|
127 | * Providing better error messages (patch provided by Johan Euphrosine). |
---|
128 | |
---|
129 | * Adding get_slabs() function to get stats. (Patch provided |
---|
130 | by Nick Verbeck) |
---|
131 | |
---|
132 | Sun, 01 Jun 2008 15:05:11 -0600 Sean Reifschneider <jafo@tummy.com> |
---|
133 | |
---|
134 | * Version 1.43 |
---|
135 | |
---|
136 | * eliott reported a bug in the 1.42 related to the socket timeout code |
---|
137 | causing a traceback due to the timeout value not being set. |
---|
138 | |
---|
139 | Sat, 31 May 2008 02:09:17 -0600 Sean Reifschneider <jafo@tummy.com> |
---|
140 | |
---|
141 | * Version 1.42 |
---|
142 | |
---|
143 | * Paul Hummer set up a Launchpad project which I'm going to start using |
---|
144 | to track patches and allow users to set up their own bzr branches and |
---|
145 | manage marging in the upstream patches with their own. |
---|
146 | |
---|
147 | https://launchpad.net/python-memcached |
---|
148 | |
---|
149 | * Patch from Jehiah Czebotar which does: Changing the calls to |
---|
150 | mark_dead() to make them dereference tuples, reducing timeout on |
---|
151 | sockets to 3 seconds, settable via setting Host._SOCKET_TIMEOUT. |
---|
152 | |
---|
153 | * Patches from Steve Schwarz for set_multi() to return the full set of |
---|
154 | keys if all servers are down. Previously would not report any keys. |
---|
155 | |
---|
156 | * Fix from Steve Schwarz delete_multi() argument "seconds" not being |
---|
157 | correctly handled. Changed it to "time" to match all other calls. |
---|
158 | |
---|
159 | * Patch from Peter Wilkinson to support using unix domain sockets. |
---|
160 | He reports that tests succeed with with memcached daemons running, |
---|
161 | the normal and a domain socket started via |
---|
162 | "memcached -s memcached.socket". I massaged it quite a bit. |
---|
163 | |
---|
164 | To use domain sockets, use a connect string of "unix:/path/to/socket" |
---|
165 | Note however that if you are using a host name of "unix", it will now |
---|
166 | detect "unix:11211" as being a domain socket with the name "11211". |
---|
167 | In this case, please use "inet:unix:11211". |
---|
168 | |
---|
169 | Because of this, it is now preferred to use a connect string prefix |
---|
170 | of "inet:" or "unix:". |
---|
171 | |
---|
172 | Tue, 29 Apr 2008 21:03:53 -0600 Sean Reifschneider <jafo@tummy.com> |
---|
173 | |
---|
174 | * Version 1.41 |
---|
175 | |
---|
176 | * Patch from Jehiah Czebotar to catch an additional server disconnect |
---|
177 | situation. |
---|
178 | |
---|
179 | * Patch from Andrey Petrov to add the "append" and "replace" commands. |
---|
180 | |
---|
181 | Tue, 18 Sep 2007 20:52:09 -0600 Sean Reifschneider <jafo@tummy.com> |
---|
182 | |
---|
183 | * Version 1.40 |
---|
184 | |
---|
185 | * Updated setup.py file that uses distutils provided by Kai Lautaportti. |
---|
186 | |
---|
187 | * Prevent keys from containing ASCII character 127 as well, patch provided |
---|
188 | by Philip Neustrom. |
---|
189 | |
---|
190 | * Added ability to overload the persistent_load/id, patch provided by |
---|
191 | Steve Schwarz. |
---|
192 | |
---|
193 | * Fixed ability to pass (server_hash,key) in place of key in Client.set() |
---|
194 | Reported by Alexander Klyuev. |
---|
195 | |
---|
196 | Tue, 14 Aug 2007 14:43:27 -0600 Sean Reifschneider <jafo@tummy.com> |
---|
197 | |
---|
198 | * Version 1.39 |
---|
199 | |
---|
200 | * Michael Krause reports the previous version doesn't work for |
---|
201 | _val_to_store_info() calls because it's defined as a staticmethod. |
---|
202 | Removing staticmethod decorator. Also confirmed by Kai Lautaportti, |
---|
203 | with suggested fix of removing staticmethod. |
---|
204 | |
---|
205 | Fri, 10 Aug 2007 17:50:13 -0600 Sean Reifschneider <jafo@tummy.com> |
---|
206 | |
---|
207 | * Version 1.38 |
---|
208 | |
---|
209 | * Matt McClanahan submitted a patch that allow add() to have a |
---|
210 | min_compress_len argument. |
---|
211 | |
---|
212 | * Steve Schwarz submitted a patch allowing user-defined picklers. |
---|
213 | |
---|
214 | * Michael Krause suggested checking the return value to prevent an |
---|
215 | exception from being raised in _set() when a value is too large to be |
---|
216 | stored. |
---|
217 | |
---|
218 | Fri, 27 Jul 2007 01:55:48 -0600 Sean Reifschneider <jafo@tummy.com> |
---|
219 | |
---|
220 | * Version 1.37 |
---|
221 | |
---|
222 | * Fixing call from add() to _set() with parameter for min_compress_len. |
---|
223 | Reported by Jeff Fisher. |
---|
224 | |
---|
225 | Thu, 07 Jun 2007 04:10:31 -0600 Sean Reifschneider <jafo@tummy.com> |
---|
226 | |
---|
227 | * Version 1.36 |
---|
228 | |
---|
229 | * Patch by Dave St.Germain to make the Client() class sub-class |
---|
230 | threadlocal to help with multi-threading issues. Only available in |
---|
231 | Python 2.4 and above. |
---|
232 | |
---|
233 | * Patch by James Robinson with: |
---|
234 | 1) new set_multi method. |
---|
235 | 2) factored out determining the flags, length, and value to store |
---|
236 | from set() into method _val_to_store_info() for use by both set() |
---|
237 | and set_multi(). |
---|
238 | 3) send_cmds() method on host which doesn't apply the trailing '\r\n' |
---|
239 | for use by set_multi. |
---|
240 | 4) check_key() extended a bit to allow for testing the prefix passed |
---|
241 | to set_multi just once, not once per each key. |
---|
242 | 5) Patch also enables support for auto compression in set, set_multi, |
---|
243 | and replace. |
---|
244 | |
---|
245 | * Suggestion by Helge Tesdal, fixes in check_key for non-string keys. |
---|
246 | |
---|
247 | * NOTE: On a farm of clients with multiple servers, all clients will |
---|
248 | need to be upgraded to this version. The next patch changes the |
---|
249 | server hash. |
---|
250 | |
---|
251 | * Philip Neustrom supplied a patch to change the server hash function to |
---|
252 | binascii.crc32. The original "hash()" call is not cross-platform, so |
---|
253 | big and little endian systems accessing the same memcache may end up |
---|
254 | hitting different servers. Restore the old functionality by calling: |
---|
255 | "memcached.serverHashFunction = hash" after importing memcache. |
---|
256 | |
---|
257 | * Philip Neustrom points out that passing Unicode keys or values causes |
---|
258 | problems because len(key) or len(value) is not equal to the number of |
---|
259 | bytes that are required to store the key/value. Philip provides a |
---|
260 | patch which raises an exception in this case. Raises |
---|
261 | memcache.Client.MemcachedStringEncodingError exception in this case. |
---|
262 | |
---|
263 | * NOTE: If you recompiled memcached to increase the default 1MB max |
---|
264 | value size, you will need to call "memcached.MAX_SERVER_VALUE_LENGTH = N" |
---|
265 | or memcached will not store values larger than the default 1MB. |
---|
266 | |
---|
267 | * Philip Neustrom includes another patch which checks that the key |
---|
268 | doesn't exceed the memcache server's max size. If it does, the item |
---|
269 | is silently not stored. |
---|
270 | |
---|
271 | * Philip Neustrom added a bunch of sanity checks. |
---|
272 | |
---|
273 | * Jehiah Czebotar provided a patch to make the add() and replace() |
---|
274 | functions return 0 when the add or replace fails, similar to how set() |
---|
275 | works. |
---|
276 | |
---|
277 | Sat, 16 Sep 2006 18:31:46 -0600 Sean Reifschneider <jafo@tummy.com> |
---|
278 | |
---|
279 | * Version 1.34 |
---|
280 | |
---|
281 | * In get_multi, if the recv loop reads 0 bytes, raising an EOFError. |
---|
282 | Identified by Jim Baker. |
---|
283 | |
---|
284 | Tue, 05 Sep 2006 14:06:50 -0600 Sean Reifschneider <jafo@tummy.com> |
---|
285 | |
---|
286 | * Version 1.33 |
---|
287 | |
---|
288 | * Including patch from Yoshinori K. Okuji to read in larger chunks for |
---|
289 | readline() calls. This should dramatically improve performance under |
---|
290 | some circumstances. |
---|
291 | |
---|
292 | Sun, 03 Sep 2006 14:02:03 -0600 Sean Reifschneider <jafo@tummy.com> |
---|
293 | |
---|
294 | * Version 1.32 |
---|
295 | |
---|
296 | * Including patch from Philip Neustrom which checks keys sent to the |
---|
297 | server for length and bad characters. |
---|
298 | |
---|
299 | Sat, 20 May 2006 14:51:28 -0600 Sean Reifschneider <jafo@tummy.com> |
---|
300 | |
---|
301 | * Version 1.31 |
---|
302 | |
---|
303 | * Rolled version 1.30 since the Danga folks are now listing this |
---|
304 | version as the official version. Removing the "tummy" from the version |
---|
305 | number, and incrementing so that it's clear it's more recent than "1.2". |
---|
306 | |
---|
307 | * Patch applied from Simon Forman for handling of weighted hosts. |
---|
308 | |
---|
309 | * Added a little more meat to the README. |
---|
310 | |
---|
311 | Sat, 28 Jan 2006 15:59:50 -0700 Sean Reifschneider <jafo@tummy.com> |
---|
312 | |
---|
313 | * cludwin at socallocal suggested that the write-combining with |
---|
314 | sendall() may not be beneficial. After testing on both SMP and non-SMP |
---|
315 | machines, I can't see a significant benefit to not doing the |
---|
316 | write-combining, even on large strings. The benefits of write-combining |
---|
317 | on smaller strings seems to be significant on UP machines in tight loops. |
---|
318 | Even on strings that are larger than 2MB, there seems to be no benefit to |
---|
319 | splitting out the writes. |
---|
320 | |
---|
321 | Sun, 18 Sep 2005 18:56:31 -0600 Sean Reifschneider <jafo@tummy.com> |
---|
322 | |
---|
323 | * Changing a printf to debuglog and catching a pickle exception, patch |
---|
324 | submitted by Justin Azoff. |
---|
325 | |
---|
326 | Thu, 14 Jul 2005 11:17:30 -0700 Sean Reifschneider <jafo@tummy.com> |
---|
327 | |
---|
328 | * Alex Stapleton found that the sendall call was slow for writing data |
---|
329 | larger than several kilobytes. I had him test a change to his patch, |
---|
330 | which worked as well, but was simpler. The code now does two sendall |
---|
331 | calls, one for the data and one for the line termination, if the data is |
---|
332 | larger than 100 bytes. |
---|
333 | |
---|
334 | Thu, 7 Apr 2005 14:45:44 -0700 Sean Reifschneider <jafo@tummy.com> |
---|
335 | |
---|
336 | * Incorporating some fixes to get_multi() from Bo Yang |
---|
337 | |
---|
338 | Mon, 13 Dec 2004 02:35:17 -0700 Sean Reifschneider <jafo@tummy.com> |
---|
339 | |
---|
340 | * Simplifying the readline() function and speeding it up ~25%. |
---|
341 | * Fixing a bug in readline() if the server drops, mark_dead() was not |
---|
342 | being properly called. |
---|
343 | |
---|
344 | Sun, 12 Dec 2004 18:56:33 -0700 Sean Reifschneider <jafo@tummy.com> |
---|
345 | |
---|
346 | * Adding "stats()" and "flush_all()" methods. |
---|
347 | |
---|
348 | Thu, 10 Aug 2003 12:17:50 -0700 Evan Martin <martine@danga.com> |
---|
349 | |
---|
350 | * Slightly more verbose self-test output. |
---|
351 | * Fix mark_dead() to use proper classname. |
---|
352 | * Make pooltest.py run from the test directory. |
---|
353 | |
---|
354 | Thu, 07 Aug 2003 16:32:32 -0700 Evan Martin <martine@danga.com> |
---|
355 | |
---|
356 | * Add incr, decr, and delete. |
---|
357 | * Better Python (based on comments from Uriah Welcome). |
---|
358 | * Docs, using epydoc. |
---|
359 | |
---|
360 | Thu, 07 Aug 2003 14:20:27 -0700 Evan Martin <martine@danga.com> |
---|
361 | |
---|
362 | * Initial prerelease. |
---|