commit b9eb8a68a6390c4193ab73610c0c0b256fc2951a
parent bc135759e8db68ecd6582d6adf46ac405c79ea51
Author: lash <dev@holbrook.no>
Date: Thu, 13 Oct 2022 07:52:00 +0000
Avoid crash when no registered filters
Diffstat:
5 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG
@@ -1,3 +1,5 @@
+* 0.5.0
+ - Avoid crash on no registered filters
* 0.4.8
- Add unlock action description to info loglevel for unlock tool
* 0.4.7
diff --git a/chainsyncer/filter.py b/chainsyncer/filter.py
@@ -54,6 +54,7 @@ class FilterState:
self.peek = self.state_store.peek
self.from_name = self.state_store.from_name
self.list = self.state_store.list
+ self.count = self.state_store.count
self.state_store.sync()
self.all = self.state_store.all
self.started = False
diff --git a/chainsyncer/store/base.py b/chainsyncer/store/base.py
@@ -51,11 +51,14 @@ class SyncItem:
if filter_state & self.filter_state.from_name('LOCK') > 0 and not ignore_lock:
raise LockError(self.state_key)
- self.count = len(self.filter_state.all(pure=True)) - 4
+ all_states = self.filter_state.all(pure=True)
+ logg.info('all {}'.format(all_states))
+ self.count = len(all_states) - 5
+ logg.info('sounce {}'.format(self.count))
self.skip_filter = False
- if self.count == 0:
- self.skip_filter = True
- elif not started:
+ #if self.count == 0:
+ # self.skip_filter = True
+ if not started:
self.filter_state.move(self.state_key, self.filter_state.from_name('RESET'))
@@ -68,10 +71,11 @@ class SyncItem:
def reset(self, check_incomplete=True):
if check_incomplete:
- if self.filter_state.state(self.state_key) & self.filter_state.from_name('LOCK') > 0:
- raise LockError('reset attempt on {} when state locked'.format(self.state_key))
- if self.filter_state.state(self.state_key) & self.filter_state.from_name('DONE') == 0:
- raise IncompleteFilterError('reset attempt on {} when incomplete'.format(self.state_key))
+ if self.count > 0:
+ if self.filter_state.state(self.state_key) & self.filter_state.from_name('LOCK') > 0:
+ raise LockError('reset attempt on {} when state locked'.format(self.state_key))
+ if self.filter_state.state(self.state_key) & self.filter_state.from_name('DONE') == 0:
+ raise IncompleteFilterError('reset attempt on {} when incomplete'.format(self.state_key))
self.filter_state.move(self.state_key, self.filter_state.from_name('RESET'))
@@ -101,8 +105,8 @@ class SyncItem:
def advance(self, ignore_lock=False):
- if self.skip_filter:
- raise FilterDone()
+ #if self.skip_filter:
+ # raise FilterDone()
self.__check_done()
if self.filter_state.state(self.state_key) & self.filter_state.from_name('LOCK') > 0:
diff --git a/requirements.txt b/requirements.txt
@@ -2,4 +2,4 @@ confini~=0.6.1
semver==2.13.0
hexathon~=0.1.7
chainlib~=0.3.0
-shep~=0.2.9
+shep~=0.2.10
diff --git a/run_tests.sh b/run_tests.sh
@@ -9,7 +9,7 @@ for f in `ls tests/*.py`; do
fi
done
-for f in `ls tests/store/*.py`; do
+for f in `ls tests/store/test_*_*.py`; do
python $f
if [ $? -gt 0 ]; then
exit