From 7369145a493b055b559bcecdcab6c0ad7fb55f5f Mon Sep 17 00:00:00 2001 From: MrNaif2018 Date: Tue, 9 Jan 2024 20:25:09 +0300 Subject: [PATCH] Fix graceful shutdown for lightning swaps --- electrum/lnworker.py | 2 ++ electrum/submarine_swaps.py | 3 +++ electrum/tests/test_lnpeer.py | 1 + 3 files changed, 6 insertions(+) diff --git a/electrum/lnworker.py b/electrum/lnworker.py index 758ddcaab..28fa8fe37 100644 --- a/electrum/lnworker.py +++ b/electrum/lnworker.py @@ -967,6 +967,8 @@ class LNWallet(LNWorker): if self.lnwatcher: await self.lnwatcher.stop() self.lnwatcher = None + if self.swap_manager: # may not be present in tests + await self.swap_manager.stop() async def wait_for_received_pending_htlcs_to_get_removed(self): assert self.stopping_soon is True diff --git a/electrum/submarine_swaps.py b/electrum/submarine_swaps.py index 8ce0f591f..e8a861fe2 100644 --- a/electrum/submarine_swaps.py +++ b/electrum/submarine_swaps.py @@ -219,6 +219,9 @@ class SwapManager(Logger): finally: self.logger.info("taskgroup stopped.") + async def stop(self): + await self.taskgroup.cancel_remaining() + async def pay_invoice(self, key): self.logger.info(f'trying to pay invoice {key}') self.invoices_to_pay[key] = 1000000000000 # lock diff --git a/electrum/tests/test_lnpeer.py b/electrum/tests/test_lnpeer.py index e016a5ea1..fc25a8bb0 100644 --- a/electrum/tests/test_lnpeer.py +++ b/electrum/tests/test_lnpeer.py @@ -147,6 +147,7 @@ class MockLNWallet(Logger, EventListener, NetworkRetryManager[LNPeerAddr]): self.network = MockNetwork(tx_queue, config=self.config) self.taskgroup = OldTaskGroup() self.lnwatcher = None + self.swap_manager = None self.listen_server = None self._channels = {chan.channel_id: chan for chan in chans} self.payment_info = {}