From 1a4cefd414b108b4c172445d13c67c80a13b492e Mon Sep 17 00:00:00 2001 From: Sean Reifschneider Date: Wed, 15 Dec 2010 22:20:03 -0700 Subject: When using set_multi and one value is too big, traceback --- ChangeLog | 4 ++++ memcache.py | 16 ++++++++++------ 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 ":". 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: -- cgit v1.2.1