lnworker: fix threading issues for .channels attribute
external code (commands/gui) did not always take lock when iterating lnworker.channels. instead of exposing lock, let's take a copy internally (as with .peers)
This commit is contained in:
@@ -102,7 +102,7 @@ class MockLNWallet(Logger, NetworkRetryManager[LNPeerAddr]):
|
||||
self.remote_keypair = remote_keypair
|
||||
self.node_keypair = local_keypair
|
||||
self.network = MockNetwork(tx_queue)
|
||||
self.channels = {chan.channel_id: chan}
|
||||
self._channels = {chan.channel_id: chan}
|
||||
self.payments = {}
|
||||
self.logs = defaultdict(list)
|
||||
self.wallet = MockWallet()
|
||||
@@ -122,6 +122,10 @@ class MockLNWallet(Logger, NetworkRetryManager[LNPeerAddr]):
|
||||
def lock(self):
|
||||
return noop_lock()
|
||||
|
||||
@property
|
||||
def channels(self):
|
||||
return self._channels
|
||||
|
||||
@property
|
||||
def peers(self):
|
||||
return self._peers
|
||||
@@ -131,11 +135,11 @@ class MockLNWallet(Logger, NetworkRetryManager[LNPeerAddr]):
|
||||
return {self.remote_keypair.pubkey: self.peer}
|
||||
|
||||
def channels_for_peer(self, pubkey):
|
||||
return self.channels
|
||||
return self._channels
|
||||
|
||||
def get_channel_by_short_id(self, short_channel_id):
|
||||
with self.lock:
|
||||
for chan in self.channels.values():
|
||||
for chan in self._channels.values():
|
||||
if chan.short_channel_id == short_channel_id:
|
||||
return chan
|
||||
|
||||
|
||||
Reference in New Issue
Block a user