Compare commits
7 Commits
dev-0.1.8
...
dev-0.1.14
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
263d4df300
|
||
|
|
029deead75
|
||
|
|
da9fb5925d
|
||
|
|
cbf00281c6
|
||
|
|
01ad409077
|
||
|
|
3a8ec01588
|
||
|
|
b63793fd9b
|
17
CHANGELOG
17
CHANGELOG
@@ -1,3 +1,20 @@
|
||||
- 0.1.14
|
||||
* Upgrade shep to handle exception in filestore list
|
||||
- 0.1.13
|
||||
* Remove sync on each get
|
||||
* Upgrade shep to guarantee atomic state lock state
|
||||
- 0.1.12
|
||||
* Raise correct exception from index store exists check
|
||||
- 0.1.11
|
||||
* Allow for sync skip in store instantiation
|
||||
- 0.1.10
|
||||
* Improve logging
|
||||
- 0.1.9
|
||||
* Upgrade deps
|
||||
- 0.1.8
|
||||
* Upgrade deps
|
||||
- 0.1.7
|
||||
* Improve logging
|
||||
- 0.1.6
|
||||
* Sort upcoming queue item chronologically
|
||||
* Add unit testing for upcoming query method
|
||||
|
||||
@@ -29,7 +29,7 @@ all_local_errors = all_errors() - StatusBits.NETWORK_ERROR
|
||||
re_u = r'^[^_][_A-Z]+$'
|
||||
class Store:
|
||||
|
||||
def __init__(self, chain_spec, state_store, index_store, counter, cache=None):
|
||||
def __init__(self, chain_spec, state_store, index_store, counter, cache=None, sync=True):
|
||||
self.chain_spec = chain_spec
|
||||
self.cache = cache
|
||||
self.state_store = state_store
|
||||
@@ -47,9 +47,13 @@ class Store:
|
||||
'unset',
|
||||
'name',
|
||||
'modified',
|
||||
'purge',
|
||||
]:
|
||||
setattr(self, v, getattr(self.state_store, v))
|
||||
|
||||
if not sync:
|
||||
return
|
||||
|
||||
sync_err = None
|
||||
try:
|
||||
self.state_store.sync()
|
||||
@@ -79,7 +83,6 @@ class Store:
|
||||
s = self.index_store.get(k)
|
||||
err = None
|
||||
try:
|
||||
self.state_store.sync()
|
||||
v = self.state_store.get(s)
|
||||
except FileNotFoundError as e:
|
||||
err = e
|
||||
@@ -105,10 +108,12 @@ class Store:
|
||||
if item_state & state != item_state:
|
||||
continue
|
||||
|
||||
logg.info('state {} {}'.format(ref, item_state))
|
||||
if item_state & not_state > 0:
|
||||
continue
|
||||
|
||||
item_state_str = self.state_store.name(item_state)
|
||||
logg.info('state {} {} ({})'.format(ref, item_state_str, item_state))
|
||||
|
||||
if threshold != None:
|
||||
v = self.state_store.modified(ref)
|
||||
if v > threshold:
|
||||
|
||||
@@ -6,7 +6,10 @@ import logging
|
||||
from leveldir.hex import HexDir
|
||||
|
||||
# local imports
|
||||
from chainqueue.error import DuplicateTxError
|
||||
from chainqueue.error import (
|
||||
DuplicateTxError,
|
||||
NotLocalTxError,
|
||||
)
|
||||
|
||||
logg = logging.getLogger(__name__)
|
||||
|
||||
@@ -22,7 +25,7 @@ class IndexStore(HexDir):
|
||||
existing = None
|
||||
try:
|
||||
existing = self.get(k)
|
||||
except FileNotFoundError:
|
||||
except NotLocalTxError:
|
||||
pass
|
||||
return existing != None
|
||||
|
||||
@@ -37,7 +40,14 @@ class IndexStore(HexDir):
|
||||
|
||||
def get(self, k):
|
||||
fp = self.store.to_filepath(k)
|
||||
f = open(fp, 'rb')
|
||||
f = None
|
||||
err = None
|
||||
try:
|
||||
f = open(fp, 'rb')
|
||||
except FileNotFoundError as e:
|
||||
err = e
|
||||
if err != None:
|
||||
raise NotLocalTxError(err)
|
||||
v = f.read()
|
||||
f.close()
|
||||
return v.decode('utf-8')
|
||||
|
||||
@@ -6,4 +6,4 @@ leveldir~=0.3.0
|
||||
confini~=0.6.0
|
||||
#pyxdg~=0.27
|
||||
chainlib~=0.1.1
|
||||
shep~=0.2.3
|
||||
shep~=0.2.7
|
||||
|
||||
Reference in New Issue
Block a user