possible account leak fix

This commit is contained in:
tim
2025-02-25 19:27:31 -04:00
parent 473e0ec516
commit 5ef92caa51
2 changed files with 7 additions and 1 deletions

View File

@@ -62,6 +62,7 @@ class Account (LocalAccount):
Account._all.append(account)
metric.account_available.set(Account._pool.qsize())
metric.account_total.set(len(Account._all))
log.info(f'Account pool {[a.address for a in Account._all]}')
def __init__(self, local_account: LocalAccount): # todo chain_id?
super().__init__(local_account._key_obj, local_account._publicapi) # from digging into the source code

View File

@@ -108,7 +108,11 @@ async def create_and_send_transactions():
if account is None:
warningAlert(f'No account available for job {job.id} type "{handler.tag}"', 'no account available')
continue
try:
await ctx.sign(account)
except Exception:
await handler.release_account(account)
raise
log.info(f'servicing job {job.request.__class__.__name__} {job.id} with account {account.address} nonce {ctx.tx["nonce"]} tx {ctx.id}')
# noinspection PyBroadException
try:
@@ -121,6 +125,7 @@ async def create_and_send_transactions():
if msg.startswith('nonce too low'):
# Nonce too low
log.warning(f'Account {account.address} nonce too low')
log.info(f'Account nonce is {account._nonce} ({ctx.tx["nonce"]}) but should be {await current_w3.get().eth.get_transaction_count(account.address, 'pending')}')
account.reset_nonce()
elif msg.startswith('insufficient funds'):
warningAlert('Account Empty', f'Account {account.address} is out of funds!')