Skip to content

Commit

Permalink
CBQE-248: fix ERR_NOT_MY_VBUCKET error in VBucketAwareMemcached
Browse files Browse the repository at this point in the history
Change-Id: I380a0470d35fbd33d4934f670f49604f78cd5363
Reviewed-on: http://review.couchbase.org/17373
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Karan Kumar <karan@couchbase.com>
  • Loading branch information
andreibaranouski committed Jun 19, 2012
1 parent c157565 commit f1b5e41
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions lib/memcached/helper/data_helper.py
Expand Up @@ -738,9 +738,15 @@ def reset_vbucket(self, rest, key):
self.log.info("Recevied forward map, reset vbucket map, new direct_client")
self.memcacheds[vBucket.master] = MemcachedClientHelper.direct_client(server, self.bucket)
return True
else:
# if no one is using that memcached connection anymore just close the connection
return True
# if no one is using that memcached connection anymore just close the connection
used_nodes = set([self.vBucketMap[vb_name] for vb_name in self.vBucketMap])
rm_clients = []
for memcache_con in self.memcacheds:
if memcache_con not in used_nodes:
rm_clients.append(memcache_con)
for rm_cl in rm_clients:
self.memcacheds[rm_cl].close()
del self.memcacheds[rm_cl]
return False

def request_map(self, rest, bucket):
Expand Down Expand Up @@ -828,6 +834,7 @@ def set(self, key, exp, flags, value):
vb_error += 1
else:
raise error

except EOFError as error:
if "Got empty data (remote died?)" in error.message and vb_error < 3:
self.reset_vbucket(self.rest, key)
Expand Down

0 comments on commit f1b5e41

Please sign in to comment.