summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Reifschneider <jafo@tummy.com>2010-12-15 22:20:03 -0700
committerSean Reifschneider <jafo@tummy.com>2010-12-15 22:20:03 -0700
commit1a4cefd414b108b4c172445d13c67c80a13b492e (patch)
treefe8f4a5a3835aeb3b69e21f4a0739daf630b3ec0
parent6d6c2afd8e3d88b9f9e0648372e1a49eb1e5819d (diff)
downloadpython-memcached-1a4cefd414b108b4c172445d13c67c80a13b492e.tar.gz
When using set_multi and one value is too big, traceback
-rw-r--r--ChangeLog4
-rw-r--r--memcache.py16
2 files changed, 14 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index dd12ab1..964f6e2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+ * 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.
diff --git a/memcache.py b/memcache.py
index aa31371..bb10c03 100644
--- a/memcache.py
+++ b/memcache.py
@@ -359,7 +359,6 @@ class Client(local):
for server in dead_servers:
del server_keys[server]
- notstored = [] # original keys.
for server, keys in server_keys.iteritems():
try:
for key in keys:
@@ -635,20 +634,26 @@ class Client(local):
self._statlog('set_multi')
-
-
server_keys, prefixed_to_orig_key = self._map_and_prefix_keys(mapping.iterkeys(), key_prefix)
# send out all requests on each server before reading anything
dead_servers = []
+ notstored = [] # original keys.
for server in server_keys.iterkeys():
bigcmd = []
write = bigcmd.append
try:
for key in server_keys[server]: # These are mangled keys
- store_info = self._val_to_store_info(mapping[prefixed_to_orig_key[key]], min_compress_len)
- write("set %s %d %d %d\r\n%s\r\n" % (key, store_info[0], time, store_info[1], store_info[2]))
+ store_info = self._val_to_store_info(
+ mapping[prefixed_to_orig_key[key]],
+ min_compress_len)
+ if store_info:
+ write("set %s %d %d %d\r\n%s\r\n" % (key, store_info[0],
+ time, store_info[1], store_info[2]))
+ else:
+ notstored.append(prefixed_to_orig_key[key])
+ server.send_cmds(''.join(bigcmd))
server.send_cmds(''.join(bigcmd))
except socket.error, msg:
if isinstance(msg, tuple): msg = msg[1]
@@ -662,7 +667,6 @@ class Client(local):
# short-circuit if there are no servers, just return all keys
if not server_keys: return(mapping.keys())
- notstored = [] # original keys.
for server, keys in server_keys.iteritems():
try:
for key in keys: