possible account leak fix
This commit is contained in:
@@ -62,6 +62,7 @@ class Account (LocalAccount):
|
|||||||
Account._all.append(account)
|
Account._all.append(account)
|
||||||
metric.account_available.set(Account._pool.qsize())
|
metric.account_available.set(Account._pool.qsize())
|
||||||
metric.account_total.set(len(Account._all))
|
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?
|
def __init__(self, local_account: LocalAccount): # todo chain_id?
|
||||||
super().__init__(local_account._key_obj, local_account._publicapi) # from digging into the source code
|
super().__init__(local_account._key_obj, local_account._publicapi) # from digging into the source code
|
||||||
|
|||||||
@@ -108,7 +108,11 @@ async def create_and_send_transactions():
|
|||||||
if account is None:
|
if account is None:
|
||||||
warningAlert(f'No account available for job {job.id} type "{handler.tag}"', 'no account available')
|
warningAlert(f'No account available for job {job.id} type "{handler.tag}"', 'no account available')
|
||||||
continue
|
continue
|
||||||
await ctx.sign(account)
|
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}')
|
log.info(f'servicing job {job.request.__class__.__name__} {job.id} with account {account.address} nonce {ctx.tx["nonce"]} tx {ctx.id}')
|
||||||
# noinspection PyBroadException
|
# noinspection PyBroadException
|
||||||
try:
|
try:
|
||||||
@@ -121,6 +125,7 @@ async def create_and_send_transactions():
|
|||||||
if msg.startswith('nonce too low'):
|
if msg.startswith('nonce too low'):
|
||||||
# Nonce too low
|
# Nonce too low
|
||||||
log.warning(f'Account {account.address} 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()
|
account.reset_nonce()
|
||||||
elif msg.startswith('insufficient funds'):
|
elif msg.startswith('insufficient funds'):
|
||||||
warningAlert('Account Empty', f'Account {account.address} is out of funds!')
|
warningAlert('Account Empty', f'Account {account.address} is out of funds!')
|
||||||
|
|||||||
Reference in New Issue
Block a user