Remove race waits (defer to client layer)

This commit is contained in:
lash 2022-05-01 06:44:33 +00:00
parent f7c09acfe2
commit 532ff230b4
Signed by: lash
GPG Key ID: 21D2E7BB88C2A746
4 changed files with 24 additions and 30 deletions

View File

@ -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 - 0.1.2
* Add CLI inspection tools * Add CLI inspection tools
- 0.1.1 - 0.1.1

View File

@ -24,12 +24,6 @@ class CacheIntegrityError(ChainQueueException):
pass pass
class BackendIntegrityError(ChainQueueException):
"""Raised when queue backend has invalid state
"""
pass
class DuplicateTxError(ChainQueueException): class DuplicateTxError(ChainQueueException):
"""Backend already knows transaction """Backend already knows transaction
""" """

View File

@ -7,10 +7,7 @@ import time
# local imports # local imports
from chainqueue.cache import CacheTx from chainqueue.cache import CacheTx
from chainqueue.entry import QueueEntry from chainqueue.entry import QueueEntry
from chainqueue.error import ( from chainqueue.error import NotLocalTxError
NotLocalTxError,
BackendIntegrityError,
)
from chainqueue.enum import ( from chainqueue.enum import (
StatusBits, StatusBits,
all_errors, all_errors,
@ -32,8 +29,6 @@ all_local_errors = all_errors() - StatusBits.NETWORK_ERROR
re_u = r'^[^_][_A-Z]+$' re_u = r'^[^_][_A-Z]+$'
class Store: class Store:
race_delay = 0.1
def __init__(self, chain_spec, state_store, index_store, counter, cache=None): def __init__(self, chain_spec, state_store, index_store, counter, cache=None):
self.chain_spec = chain_spec self.chain_spec = chain_spec
self.cache = cache self.cache = cache
@ -56,16 +51,13 @@ class Store:
setattr(self, v, getattr(self.state_store, v)) setattr(self, v, getattr(self.state_store, v))
sync_err = None sync_err = None
for i in range(2): try:
try: self.state_store.sync()
self.state_store.sync() except Exception as e:
except Exception as e: sync_err = e
sync_err = e
time.sleep(self.race_delay)
continue
if sync_err != None: if sync_err != None:
raise BackendIntegrityError(sync_err) raise FileNotFoundError(sync_err)
def put(self, v, cache_adapter=CacheTx): def put(self, v, cache_adapter=CacheTx):
@ -84,16 +76,15 @@ class Store:
def get(self, k): def get(self, k):
v = None v = None
for i in range(2): s = self.index_store.get(k)
s = self.index_store.get(k) err = None
try: try:
self.state_store.sync() self.state_store.sync()
v = self.state_store.get(s) v = self.state_store.get(s)
except FileNotFoundError: except FileNotFoundError as e:
continue err = e
break
if v == None: if v == None:
raise NotLocalTxError(k) raise NotLocalTxError('could not find tx {}: {}'.format(k, err))
return (s, v,) return (s, v,)

View File

@ -1,6 +1,6 @@
[metadata] [metadata]
name = chainqueue name = chainqueue
version = 0.1.6 version = 0.1.7
description = Generic blockchain transaction queue control description = Generic blockchain transaction queue control
author = Louis Holbrook author = Louis Holbrook
author_email = dev@holbrook.no author_email = dev@holbrook.no