From 231b98242242ea6113bcad52f65a5369d360137f Mon Sep 17 00:00:00 2001 From: Jonathan Moody <103143855+moodyjon@users.noreply.github.com> Date: Fri, 16 Sep 2022 09:40:52 -0500 Subject: [PATCH] Wait on usage payement TX to be processed. --- lbry/wallet/ledger.py | 9 +++++++++ lbry/wallet/manager.py | 8 +------- lbry/wallet/usage_payment.py | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/lbry/wallet/ledger.py b/lbry/wallet/ledger.py index 2baa0affd..42499d2c6 100644 --- a/lbry/wallet/ledger.py +++ b/lbry/wallet/ledger.py @@ -722,6 +722,15 @@ class Ledger(metaclass=LedgerRegistry): return account.address_managers[details['chain']] return None + async def broadcast_or_release(self, tx, blocking=False): + try: + await self.broadcast(tx) + except: + await self.release_tx(tx) + raise + if blocking: + await self.wait(tx, timeout=None) + def broadcast(self, tx): # broadcast can't be a retriable call yet return self.network.broadcast(hexlify(tx.raw).decode()) diff --git a/lbry/wallet/manager.py b/lbry/wallet/manager.py index 911adcf87..40dfb3198 100644 --- a/lbry/wallet/manager.py +++ b/lbry/wallet/manager.py @@ -317,10 +317,4 @@ class WalletManager: ) async def broadcast_or_release(self, tx, blocking=False): - try: - await self.ledger.broadcast(tx) - except: - await self.ledger.release_tx(tx) - raise - if blocking: - await self.ledger.wait(tx, timeout=None) + await self.ledger.broadcast_or_release(tx, blocking=blocking) diff --git a/lbry/wallet/usage_payment.py b/lbry/wallet/usage_payment.py index a96d2e8c3..13fcf2fe1 100644 --- a/lbry/wallet/usage_payment.py +++ b/lbry/wallet/usage_payment.py @@ -83,7 +83,7 @@ class WalletServerPayer: ) log.info("pay loop: before transaction broadcast") - await self.ledger.broadcast(tx) + await self.ledger.broadcast_or_release(tx, blocking=True) if self.analytics_manager: await self.analytics_manager.send_credits_sent() log.info("pay loop: after transaction broadcast")