summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Makarov <amakarov@mirantis.com>2014-11-24 16:05:40 +0300
committerEric Brown <browne@vmware.com>2015-03-21 02:44:54 +0000
commite3cfba873bf02c4d26e2e1a275b9412b7eb54fa0 (patch)
tree18a9d132a53c3c923e5f048a59932b9d43a93c14
parent02917e381fecfe8cf7b39ccd4dce1b074c21ca0e (diff)
downloadkeystone-e3cfba873bf02c4d26e2e1a275b9412b7eb54fa0.tar.gz
Speed up memcache lock
Simplify sleep timeouts calculation removing progressive scale. Closes-bug: #1395688 Change-Id: I0f1b620df9631a4b081e8c0be93d8a9b2d60e105 (cherry picked from commit ee93b64af4f64e8e7b903e70d44eb021ab97c9ef)
-rw-r--r--keystone/common/kvs/backends/memcached.py12
1 files changed, 4 insertions, 8 deletions
diff --git a/keystone/common/kvs/backends/memcached.py b/keystone/common/kvs/backends/memcached.py
index 0d8eeb8b5..463243db8 100644
--- a/keystone/common/kvs/backends/memcached.py
+++ b/keystone/common/kvs/backends/memcached.py
@@ -57,20 +57,16 @@ class MemcachedLock(object):
def acquire(self, wait=True):
client = self.client_fn()
- i = 0
- while True:
+ for i in range(self.max_lock_attempts):
if client.add(self.key, 1, self.lock_timeout):
return True
elif not wait:
return False
else:
- sleep_time = (((i + 1) * random.random()) + 2 ** i) / 2.5
+ sleep_time = random.random()
time.sleep(sleep_time)
- if i <= self.max_lock_attempts:
- i += 1
- else:
- raise exception.UnexpectedError(
- _('Maximum lock attempts on %s occurred.') % self.key)
+ raise exception.UnexpectedError(
+ _('Maximum lock attempts on %s occurred.') % self.key)
def release(self):
client = self.client_fn()