mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-09-01 01:35:20 +00:00
lnpeer: make per-peer TaskGroup a field (as for interfaces), and use it
lnpeer (and interface) response-handling-code should not run in the network main_taskgroup as the remote could force an exception to be raised and that would kill the whole network instead of just the peer
This commit is contained in:
parent
9e57a59615
commit
956bd3baaf
2 changed files with 8 additions and 4 deletions
|
@ -24,7 +24,7 @@ from . import bitcoin
|
||||||
from . import ecc
|
from . import ecc
|
||||||
from .ecc import sig_string_from_r_and_s, get_r_and_s_from_sig_string, der_sig_from_sig_string
|
from .ecc import sig_string_from_r_and_s, get_r_and_s_from_sig_string, der_sig_from_sig_string
|
||||||
from . import constants
|
from . import constants
|
||||||
from .util import bh2u, bfh, log_exceptions, list_enabled_bits, ignore_exceptions, chunks
|
from .util import bh2u, bfh, log_exceptions, list_enabled_bits, ignore_exceptions, chunks, SilentTaskGroup
|
||||||
from .transaction import Transaction, TxOutput
|
from .transaction import Transaction, TxOutput
|
||||||
from .logging import Logger
|
from .logging import Logger
|
||||||
from .lnonion import (new_onion_packet, decode_onion_error, OnionFailureCode, calc_hops_data_for_payment,
|
from .lnonion import (new_onion_packet, decode_onion_error, OnionFailureCode, calc_hops_data_for_payment,
|
||||||
|
@ -90,6 +90,7 @@ class Peer(Logger):
|
||||||
self._local_changed_events = defaultdict(asyncio.Event)
|
self._local_changed_events = defaultdict(asyncio.Event)
|
||||||
self._remote_changed_events = defaultdict(asyncio.Event)
|
self._remote_changed_events = defaultdict(asyncio.Event)
|
||||||
Logger.__init__(self)
|
Logger.__init__(self)
|
||||||
|
self.group = SilentTaskGroup()
|
||||||
|
|
||||||
def send_message(self, message_name: str, **kwargs):
|
def send_message(self, message_name: str, **kwargs):
|
||||||
assert type(message_name) is str
|
assert type(message_name) is str
|
||||||
|
@ -231,7 +232,7 @@ class Peer(Logger):
|
||||||
@log_exceptions
|
@log_exceptions
|
||||||
@handle_disconnect
|
@handle_disconnect
|
||||||
async def main_loop(self):
|
async def main_loop(self):
|
||||||
async with aiorpcx.TaskGroup() as group:
|
async with self.group as group:
|
||||||
await group.spawn(self._message_loop())
|
await group.spawn(self._message_loop())
|
||||||
await group.spawn(self.query_gossip())
|
await group.spawn(self.query_gossip())
|
||||||
await group.spawn(self.process_gossip())
|
await group.spawn(self.process_gossip())
|
||||||
|
|
|
@ -1102,8 +1102,11 @@ class LNWallet(LNWorker):
|
||||||
if not chan.should_try_to_reestablish_peer():
|
if not chan.should_try_to_reestablish_peer():
|
||||||
continue
|
continue
|
||||||
peer = self.peers.get(chan.node_id, None)
|
peer = self.peers.get(chan.node_id, None)
|
||||||
coro = peer.reestablish_channel(chan) if peer else self.reestablish_peer_for_given_channel(chan)
|
if peer:
|
||||||
await self.network.main_taskgroup.spawn(coro)
|
await peer.group.spawn(peer.reestablish_channel(chan))
|
||||||
|
else:
|
||||||
|
await self.network.main_taskgroup.spawn(
|
||||||
|
self.reestablish_peer_for_given_channel(chan))
|
||||||
|
|
||||||
def current_feerate_per_kw(self):
|
def current_feerate_per_kw(self):
|
||||||
from .simple_config import FEE_LN_ETA_TARGET, FEERATE_FALLBACK_STATIC_FEE, FEERATE_REGTEST_HARDCODED
|
from .simple_config import FEE_LN_ETA_TARGET, FEERATE_FALLBACK_STATIC_FEE, FEERATE_REGTEST_HARDCODED
|
||||||
|
|
Loading…
Add table
Reference in a new issue