Remove race waits (defer to client layer)
This commit is contained in:
parent
f7c09acfe2
commit
532ff230b4
@ -1,3 +1,12 @@
|
||||
- 0.1.6
|
||||
* Sort upcoming queue item chronologically
|
||||
* Add unit testing for upcoming query method
|
||||
- 0.1.5
|
||||
* Add reserved state check method
|
||||
- 0.1.4
|
||||
* Dependency cleanups
|
||||
- 0.1.3
|
||||
* Add CLI args and config handling, settings object
|
||||
- 0.1.2
|
||||
* Add CLI inspection tools
|
||||
- 0.1.1
|
||||
|
@ -24,12 +24,6 @@ class CacheIntegrityError(ChainQueueException):
|
||||
pass
|
||||
|
||||
|
||||
class BackendIntegrityError(ChainQueueException):
|
||||
"""Raised when queue backend has invalid state
|
||||
"""
|
||||
pass
|
||||
|
||||
|
||||
class DuplicateTxError(ChainQueueException):
|
||||
"""Backend already knows transaction
|
||||
"""
|
||||
|
@ -7,10 +7,7 @@ import time
|
||||
# local imports
|
||||
from chainqueue.cache import CacheTx
|
||||
from chainqueue.entry import QueueEntry
|
||||
from chainqueue.error import (
|
||||
NotLocalTxError,
|
||||
BackendIntegrityError,
|
||||
)
|
||||
from chainqueue.error import NotLocalTxError
|
||||
from chainqueue.enum import (
|
||||
StatusBits,
|
||||
all_errors,
|
||||
@ -32,8 +29,6 @@ all_local_errors = all_errors() - StatusBits.NETWORK_ERROR
|
||||
re_u = r'^[^_][_A-Z]+$'
|
||||
class Store:
|
||||
|
||||
race_delay = 0.1
|
||||
|
||||
def __init__(self, chain_spec, state_store, index_store, counter, cache=None):
|
||||
self.chain_spec = chain_spec
|
||||
self.cache = cache
|
||||
@ -56,16 +51,13 @@ class Store:
|
||||
setattr(self, v, getattr(self.state_store, v))
|
||||
|
||||
sync_err = None
|
||||
for i in range(2):
|
||||
try:
|
||||
self.state_store.sync()
|
||||
except Exception as e:
|
||||
sync_err = e
|
||||
time.sleep(self.race_delay)
|
||||
continue
|
||||
|
||||
if sync_err != None:
|
||||
raise BackendIntegrityError(sync_err)
|
||||
raise FileNotFoundError(sync_err)
|
||||
|
||||
|
||||
def put(self, v, cache_adapter=CacheTx):
|
||||
@ -84,16 +76,15 @@ class Store:
|
||||
|
||||
def get(self, k):
|
||||
v = None
|
||||
for i in range(2):
|
||||
s = self.index_store.get(k)
|
||||
err = None
|
||||
try:
|
||||
self.state_store.sync()
|
||||
v = self.state_store.get(s)
|
||||
except FileNotFoundError:
|
||||
continue
|
||||
break
|
||||
except FileNotFoundError as e:
|
||||
err = e
|
||||
if v == None:
|
||||
raise NotLocalTxError(k)
|
||||
raise NotLocalTxError('could not find tx {}: {}'.format(k, err))
|
||||
return (s, v,)
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user