diff --git a/electrum/lnworker.py b/electrum/lnworker.py index d422ae2dd..758ddcaab 100644 --- a/electrum/lnworker.py +++ b/electrum/lnworker.py @@ -309,7 +309,6 @@ class LNWorker(Logger, EventListener, NetworkRetryManager[LNPeerAddr]): except OSError as e: self.logger.error(f"cannot listen for lightning p2p. error: {e!r}") - @ignore_exceptions # don't kill outer taskgroup async def main_loop(self): self.logger.info("starting taskgroup.") try: diff --git a/electrum/submarine_swaps.py b/electrum/submarine_swaps.py index a1de038e1..8ce0f591f 100644 --- a/electrum/submarine_swaps.py +++ b/electrum/submarine_swaps.py @@ -207,8 +207,17 @@ class SwapManager(Logger): self.add_lnwatcher_callback(swap) self.taskgroup = OldTaskGroup() - coro = self.pay_pending_invoices() - asyncio.run_coroutine_threadsafe(self.taskgroup.spawn(coro), self.network.asyncio_loop) + asyncio.run_coroutine_threadsafe(self.main_loop(), self.network.asyncio_loop) + + async def main_loop(self): + self.logger.info("starting taskgroup.") + try: + async with self.taskgroup as group: + await group.spawn(self.pay_pending_invoices()) + except Exception as e: + self.logger.exception("taskgroup died.") + finally: + self.logger.info("taskgroup stopped.") async def pay_invoice(self, key): self.logger.info(f'trying to pay invoice {key}') diff --git a/electrum/wallet.py b/electrum/wallet.py index 892a91337..97eb08104 100644 --- a/electrum/wallet.py +++ b/electrum/wallet.py @@ -452,7 +452,6 @@ class Abstract_Wallet(ABC, Logger, EventListener): def _init_lnworker(self): self.lnworker = None - @ignore_exceptions # don't kill outer taskgroup async def main_loop(self): self.logger.info("starting taskgroup.") try: