From 32e1bc6aa5976b5ffa3559296c55eefc5dd349d7 Mon Sep 17 00:00:00 2001 From: lash Date: Mon, 2 May 2022 20:10:30 +0000 Subject: [PATCH] Correct purge call, add missing lock module --- chaind/adapters/fs.py | 8 ++++---- chaind/lock.py | 34 ++++++++++++++++++++++++++++++++++ setup.cfg | 2 +- 3 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 chaind/lock.py diff --git a/chaind/adapters/fs.py b/chaind/adapters/fs.py index 2b4d357..20b6ea8 100644 --- a/chaind/adapters/fs.py +++ b/chaind/adapters/fs.py @@ -90,18 +90,18 @@ class ChaindFsAdapter(ChaindAdapter): def succeed(self, block, tx): if self.store.is_reserved(tx.hash): raise QueueLockError(tx.hash) - r = self.store.final(tx.hash, block, tx, error=False) - self.store.purge(tx.hash) + (k, v) = self.store.get(tx.hash) + self.store.purge(k) return r def fail(self, block, tx): if self.store.is_reserved(tx.hash): raise QueueLockError(tx.hash) - r = self.store.final(tx.hash, block, tx, error=True) - self.store.purge(tx.hash) + (k, v) = self.store.get(tx.hash) + self.store.purge(k) return r diff --git a/chaind/lock.py b/chaind/lock.py new file mode 100644 index 0000000..008004f --- /dev/null +++ b/chaind/lock.py @@ -0,0 +1,34 @@ +# standard imports +import time + +# local imports +from .error import BackendError + +BASE_DELAY = 0.01 +BASE_DELAY_LIMIT = 3.0 + + +class StoreLock: + + def __init__(self, delay=BASE_DELAY, delay_limit=BASE_DELAY_LIMIT, error=BackendError, description=None): + self.base_delay = delay + self.delay = delay + self.delay_limit = delay_limit + self.error = error + self.description = description + + + def again(self, e=None): + if self.delay > self.delay_limit: + err = None + if e != None: + err = str(e) + else: + err = self.description + raise self.error(err) + time.sleep(self.delay) + self.delay *= 2 + + + def reset(self): + self.delay = self.base_delay diff --git a/setup.cfg b/setup.cfg index fe26169..b33b69c 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = chaind -version = 0.2.2 +version = 0.2.3 description = Base package for chain queue service author = Louis Holbrook author_email = dev@holbrook.no