28 lines
804 B
Python
28 lines
804 B
Python
|
# standard imports
|
||
|
import logging
|
||
|
|
||
|
# external imports
|
||
|
from chainlib.status import Status
|
||
|
from chainqueue.sql.query import get_tx
|
||
|
from chainqueue.error import NotLocalTxError
|
||
|
from chainqueue.sql.state import set_final
|
||
|
|
||
|
logg = logging.getLogger(__name__)
|
||
|
|
||
|
|
||
|
class StateFilter:
|
||
|
|
||
|
def __init__(self, chain_spec):
|
||
|
self.chain_spec = chain_spec
|
||
|
|
||
|
|
||
|
def filter(self, conn, block, tx, session=None):
|
||
|
otx = None
|
||
|
try:
|
||
|
otx = get_tx(self.chain_spec, tx.hash, session=session)
|
||
|
except NotLocalTxError:
|
||
|
return False
|
||
|
logg.info('finalizing local tx {} with status {}'.format(tx.hash, tx.status))
|
||
|
status = tx.status != Status.SUCCESS
|
||
|
set_final(self.chain_spec, tx.hash, block=block.number, tx_index=tx.index, fail=status, session=session)
|