From 42c5f84ba7d2e25b9b046055554ecac2eec0fc07 Mon Sep 17 00:00:00 2001 From: "Joshua M. Boniface" Date: Wed, 21 Oct 2020 11:17:06 -0400 Subject: [PATCH] Do multiple lock attempts --- daemon-common/zkhandler.py | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/daemon-common/zkhandler.py b/daemon-common/zkhandler.py index 8f9763b6..773b8837 100644 --- a/daemon-common/zkhandler.py +++ b/daemon-common/zkhandler.py @@ -128,14 +128,34 @@ def writedata(zk_conn, kv): # Write lock function def writelock(zk_conn, key): - lock_id = str(uuid.uuid1()) - lock = zk_conn.WriteLock('{}'.format(key), lock_id) + while True: + try: + lock_id = str(uuid.uuid1()) + lock = zk_conn.WriteLock('{}'.format(key), lock_id) + break + except Exception: + count += 1 + if count > 5: + break + else: + time.sleep(0.5) + continue return lock # Read lock function def readlock(zk_conn, key): - lock_id = str(uuid.uuid1()) - lock = zk_conn.ReadLock('{}'.format(key), lock_id) + while True: + try: + lock_id = str(uuid.uuid1()) + lock = zk_conn.ReadLock('{}'.format(key), lock_id) + break + except Exception: + count += 1 + if count > 5: + break + else: + time.sleep(0.5) + continue return lock # Exclusive lock function @@ -151,5 +171,6 @@ def exclusivelock(zk_conn, key): if count > 5: break else: + time.sleep(0.5) continue return lock