Implement error parser to rpc instantation

This commit is contained in:
nolash
2021-08-26 17:14:11 +02:00
parent fc69b2762b
commit 0c0d1fac8f
5 changed files with 140 additions and 41 deletions

View File

@@ -1,6 +1,5 @@
# standard imports
import logging
import datetime
# external imports
from chainlib.eth.constant import ZERO_ADDRESS
@@ -12,18 +11,15 @@ from hexathon import (
add_0x,
strip_0x,
)
from chainqueue.enum import (
StatusBits,
errors as queue_errors,
)
# local imports
from chainqueue.adapters.base import Adapter
from chainqueue.adapters.sessionindex import SessionIndexAdapter
logg = logging.getLogger(__name__)
class EthAdapter(Adapter):
class EthAdapter(SessionIndexAdapter):
def translate(self, bytecode, chain_spec):
logg.debug('bytecode {}'.format(bytecode))
@@ -41,27 +37,6 @@ class EthAdapter(Adapter):
return r
def upcoming(self, chain_spec, session=None):
txs = self.backend.get(chain_spec, self.translate, session=session, status=StatusBits.QUEUED, not_status=StatusBits.IN_NETWORK)
before = datetime.datetime.utcnow() - self.error_retry_threshold
errored_txs = self.backend.get(chain_spec, self.translate, session=session, status=StatusBits.LOCAL_ERROR, not_status=StatusBits.FINAL, before=before, requeue=True)
for tx_hash in errored_txs.keys():
txs[tx_hash] = errored_txs[tx_hash]
return txs
def add(self, bytecode, chain_spec, session=None):
tx = self.translate(bytecode, chain_spec)
r = self.backend.create(chain_spec, tx['nonce'], tx['from'], tx['hash'], add_0x(bytecode.hex()), session=session)
if r:
session.rollback()
session.close()
return r
r = self.backend.cache(tx, session=session)
session.commit()
return r
# def cache(self, chain_spec):
# session = self.backend.create_session()
# r = self.backend.create(chain_spec, tx['nonce'], tx['from'], tx['hash'], add_0x(bytecode.hex()), session=session)