Skip to content

Commit c37b984

Browse files
f - Make per_peer_state a FairRwLock
1 parent 519fcb4 commit c37b984

File tree

1 file changed

+38
-38
lines changed

1 file changed

+38
-38
lines changed

lightning/src/ln/channelmanager.rs

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ use prelude::*;
6464
use core::{cmp, mem};
6565
use core::cell::RefCell;
6666
use io::Read;
67-
use sync::{Arc, Condvar, Mutex, MutexGuard, RwLock, RwLockReadGuard};
67+
use sync::{Arc, Condvar, Mutex, MutexGuard, RwLock, RwLockReadGuard, FairRwLock};
6868
use core::sync::atomic::{AtomicUsize, Ordering};
6969
use core::time::Duration;
7070
use core::ops::Deref;
@@ -795,9 +795,9 @@ pub struct ChannelManager<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref,
795795
///
796796
/// If also holding `channel_state` lock, must lock `channel_state` prior to `per_peer_state`.
797797
#[cfg(not(any(test, feature = "_test_utils")))]
798-
per_peer_state: RwLock<HashMap<PublicKey, Mutex<PeerState<Signer>>>>,
798+
per_peer_state: FairRwLock<HashMap<PublicKey, Mutex<PeerState<Signer>>>>,
799799
#[cfg(any(test, feature = "_test_utils"))]
800-
pub(super) per_peer_state: RwLock<HashMap<PublicKey, Mutex<PeerState<Signer>>>>,
800+
pub(super) per_peer_state: FairRwLock<HashMap<PublicKey, Mutex<PeerState<Signer>>>>,
801801

802802
pending_events: Mutex<Vec<events::Event>>,
803803
pending_background_events: Mutex<Vec<BackgroundEvent>>,
@@ -1630,7 +1630,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
16301630
last_node_announcement_serial: AtomicUsize::new(0),
16311631
highest_seen_timestamp: AtomicUsize::new(0),
16321632

1633-
per_peer_state: RwLock::new(HashMap::new()),
1633+
per_peer_state: FairRwLock::new(HashMap::new()),
16341634

16351635
pending_events: Mutex::new(Vec::new()),
16361636
pending_background_events: Mutex::new(Vec::new()),
@@ -1728,7 +1728,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
17281728

17291729
let temporary_channel_id = channel.channel_id();
17301730
let mut channel_state = self.channel_state.lock().unwrap();
1731-
let per_peer_state = self.per_peer_state.write().unwrap();
1731+
let per_peer_state = self.per_peer_state.read().unwrap();
17321732
if let Some(peer_state_mutex) = per_peer_state.get(&their_network_key){
17331733
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
17341734
let peer_state = &mut *peer_state_lock;
@@ -1865,7 +1865,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
18651865
let result: Result<(), _> = loop {
18661866
let mut channel_state_lock = self.channel_state.lock().unwrap();
18671867
let channel_state = &mut *channel_state_lock;
1868-
let per_peer_state = self.per_peer_state.write().unwrap();
1868+
let per_peer_state = self.per_peer_state.read().unwrap();
18691869
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
18701870
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
18711871
let peer_state = &mut *peer_state_lock;
@@ -1986,7 +1986,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
19861986
let mut chan = {
19871987
let mut channel_state_lock = self.channel_state.lock().unwrap();
19881988
let channel_state = &mut *channel_state_lock;
1989-
let per_peer_state = self.per_peer_state.write().unwrap();
1989+
let per_peer_state = self.per_peer_state.read().unwrap();
19901990
if let Some(peer_state_mutex) = per_peer_state.get(peer_node_id) {
19911991
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
19921992
let peer_state = &mut *peer_state_lock;
@@ -2281,7 +2281,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
22812281
Some((cp_id, id)) => Some((cp_id.clone(), id.clone())),
22822282
};
22832283
let (chan_update_opt, forwardee_cltv_expiry_delta) = if let Some((counterparty_node_id, forwarding_id)) = forwarding_chan_info_opt {
2284-
let per_peer_state = self.per_peer_state.write().unwrap();
2284+
let per_peer_state = self.per_peer_state.read().unwrap();
22852285
let peer_state_mutex = per_peer_state.get(&counterparty_node_id).unwrap();
22862286
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
22872287
let peer_state = &mut *peer_state_lock;
@@ -2482,7 +2482,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
24822482
}
24832483

24842484
let channel_state = &mut *channel_lock;
2485-
let per_peer_state = self.per_peer_state.write().unwrap();
2485+
let per_peer_state = self.per_peer_state.read().unwrap();
24862486
if let Some(peer_state_mutex) = per_peer_state.get(&counterparty_node_id) {
24872487
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
24882488
let peer_state = &mut *peer_state_lock;
@@ -2792,7 +2792,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
27922792
) -> Result<(), APIError> {
27932793
let (chan, msg) = {
27942794
let (res, chan) = {
2795-
let per_peer_state = self.per_peer_state.write().unwrap();
2795+
let per_peer_state = self.per_peer_state.read().unwrap();
27962796
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
27972797
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
27982798
let peer_state = &mut *peer_state_lock;
@@ -2828,7 +2828,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
28282828
node_id: chan.get_counterparty_node_id(),
28292829
msg,
28302830
});
2831-
let per_peer_state = self.per_peer_state.write().unwrap();
2831+
let per_peer_state = self.per_peer_state.read().unwrap();
28322832
let chan_id = chan.channel_id();
28332833
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
28342834
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
@@ -3017,7 +3017,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
30173017
{
30183018
let mut channel_state_lock = self.channel_state.lock().unwrap();
30193019
let channel_state = &mut *channel_state_lock;
3020-
let per_peer_state = self.per_peer_state.write().unwrap();
3020+
let per_peer_state = self.per_peer_state.read().unwrap();
30213021

30223022
for (short_chan_id, mut pending_forwards) in channel_state.forward_htlcs.drain() {
30233023
if short_chan_id != 0 {
@@ -3729,7 +3729,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
37293729
HTLCSource::PreviousHopData(HTLCPreviousHopData { .. }) => {
37303730
let channel_state = self.channel_state.lock().unwrap();
37313731
let (failure_code, onion_failure_data) = {
3732-
let per_peer_state = self.per_peer_state.write().unwrap();
3732+
let per_peer_state = self.per_peer_state.read().unwrap();
37333733
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
37343734
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
37353735
let peer_state = &mut *peer_state_lock;
@@ -4085,7 +4085,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
40854085
}
40864086
};
40874087

4088-
let per_peer_state = self.per_peer_state.write().unwrap();
4088+
let per_peer_state = self.per_peer_state.read().unwrap();
40894089
if let Some(peer_state_mutex) = per_peer_state.get(&counterparty_node_id) {
40904090
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
40914091
let peer_state = &mut *peer_state_lock;
@@ -4292,7 +4292,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
42924292
if counterparty_node_id.is_none() {
42934293
return
42944294
}
4295-
let per_peer_state = self.per_peer_state.write().unwrap();
4295+
let per_peer_state = self.per_peer_state.read().unwrap();
42964296
let mut peer_state_lock;
42974297
let mut channel = {
42984298
if let Some(peer_state_mutex) = per_peer_state.get(&counterparty_node_id.unwrap()) {
@@ -4382,7 +4382,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
43824382

43834383
let mut channel_state_lock = self.channel_state.lock().unwrap();
43844384
let channel_state = &mut *channel_state_lock;
4385-
let per_peer_state = self.per_peer_state.write().unwrap();
4385+
let per_peer_state = self.per_peer_state.read().unwrap();
43864386
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
43874387
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
43884388
let peer_state = &mut *peer_state_lock;
@@ -4445,7 +4445,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
44454445
};
44464446
let mut channel_state_lock = self.channel_state.lock().unwrap();
44474447
let channel_state = &mut *channel_state_lock;
4448-
let per_peer_state = self.per_peer_state.write().unwrap();
4448+
let per_peer_state = self.per_peer_state.read().unwrap();
44494449
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
44504450
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
44514451
let peer_state = &mut *peer_state_lock;
@@ -4489,7 +4489,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
44894489
let (value, output_script, user_id) = {
44904490
let mut channel_lock = self.channel_state.lock().unwrap();
44914491
let channel_state = &mut *channel_lock;
4492-
let per_peer_state = self.per_peer_state.write().unwrap();
4492+
let per_peer_state = self.per_peer_state.read().unwrap();
44934493
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
44944494
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
44954495
let peer_state = &mut *peer_state_lock;
@@ -4523,7 +4523,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
45234523
let best_block = *self.best_block.read().unwrap();
45244524
let mut channel_lock = self.channel_state.lock().unwrap();
45254525
let channel_state = &mut *channel_lock;
4526-
let per_peer_state = self.per_peer_state.write().unwrap();
4526+
let per_peer_state = self.per_peer_state.read().unwrap();
45274527
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
45284528
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
45294529
let peer_state = &mut *peer_state_lock;
@@ -4568,7 +4568,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
45684568
}
45694569
let mut channel_state_lock = self.channel_state.lock().unwrap();
45704570
let channel_state = &mut *channel_state_lock;
4571-
let peer_state_lock = self.per_peer_state.write().unwrap();
4571+
let peer_state_lock = self.per_peer_state.read().unwrap();
45724572
let channel_id = funding_msg.channel_id;
45734573
if let Some(peer_state_mutex) = peer_state_lock.get(counterparty_node_id) {
45744574
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
@@ -4601,7 +4601,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
46014601
let best_block = *self.best_block.read().unwrap();
46024602
let mut channel_lock = self.channel_state.lock().unwrap();
46034603
let channel_state = &mut *channel_lock;
4604-
let per_peer_state = self.per_peer_state.write().unwrap();
4604+
let per_peer_state = self.per_peer_state.read().unwrap();
46054605
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
46064606
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
46074607
let peer_state = &mut *peer_state_lock;
@@ -4645,7 +4645,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
46454645
fn internal_channel_ready(&self, counterparty_node_id: &PublicKey, msg: &msgs::ChannelReady) -> Result<(), MsgHandleErrInternal> {
46464646
let mut channel_state_lock = self.channel_state.lock().unwrap();
46474647
let channel_state = &mut *channel_state_lock;
4648-
let per_peer_state = self.per_peer_state.write().unwrap();
4648+
let per_peer_state = self.per_peer_state.read().unwrap();
46494649
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
46504650
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
46514651
let peer_state = &mut *peer_state_lock;
@@ -4691,7 +4691,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
46914691
let mut channel_state_lock = self.channel_state.lock().unwrap();
46924692
let channel_state = &mut *channel_state_lock;
46934693

4694-
let per_peer_state = self.per_peer_state.write().unwrap();
4694+
let per_peer_state = self.per_peer_state.read().unwrap();
46954695
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
46964696
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
46974697
let peer_state = &mut *peer_state_lock;
@@ -4749,7 +4749,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
47494749
let (tx, chan_option) = {
47504750
let mut channel_state_lock = self.channel_state.lock().unwrap();
47514751
let channel_state = &mut *channel_state_lock;
4752-
let per_peer_state = self.per_peer_state.write().unwrap();
4752+
let per_peer_state = self.per_peer_state.read().unwrap();
47534753
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
47544754
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
47554755
let peer_state = &mut *peer_state_lock;
@@ -4809,7 +4809,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
48094809
let (pending_forward_info, mut channel_state_lock) = self.decode_update_add_htlc_onion(msg);
48104810
let channel_state = &mut *channel_state_lock;
48114811

4812-
let per_peer_state = self.per_peer_state.write().unwrap();
4812+
let per_peer_state = self.per_peer_state.read().unwrap();
48134813
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
48144814
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
48154815
let peer_state = &mut *peer_state_lock;
@@ -4855,7 +4855,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
48554855
let mut channel_lock = self.channel_state.lock().unwrap();
48564856
let (htlc_source, forwarded_htlc_value) = {
48574857
let channel_state = &mut *channel_lock;
4858-
let per_peer_state = self.per_peer_state.write().unwrap();
4858+
let per_peer_state = self.per_peer_state.read().unwrap();
48594859
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
48604860
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
48614861
let peer_state = &mut *peer_state_lock;
@@ -4879,7 +4879,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
48794879
fn internal_update_fail_htlc(&self, counterparty_node_id: &PublicKey, msg: &msgs::UpdateFailHTLC) -> Result<(), MsgHandleErrInternal> {
48804880
let mut channel_lock = self.channel_state.lock().unwrap();
48814881
let channel_state = &mut *channel_lock;
4882-
let per_peer_state = self.per_peer_state.write().unwrap();
4882+
let per_peer_state = self.per_peer_state.read().unwrap();
48834883
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
48844884
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
48854885
let peer_state = &mut *peer_state_lock;
@@ -4901,7 +4901,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
49014901
fn internal_update_fail_malformed_htlc(&self, counterparty_node_id: &PublicKey, msg: &msgs::UpdateFailMalformedHTLC) -> Result<(), MsgHandleErrInternal> {
49024902
let mut channel_lock = self.channel_state.lock().unwrap();
49034903
let channel_state = &mut *channel_lock;
4904-
let per_peer_state = self.per_peer_state.write().unwrap();
4904+
let per_peer_state = self.per_peer_state.read().unwrap();
49054905
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
49064906
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
49074907
let peer_state = &mut *peer_state_lock;
@@ -4927,7 +4927,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
49274927
fn internal_commitment_signed(&self, counterparty_node_id: &PublicKey, msg: &msgs::CommitmentSigned) -> Result<(), MsgHandleErrInternal> {
49284928
let mut channel_state_lock = self.channel_state.lock().unwrap();
49294929
let channel_state = &mut *channel_state_lock;
4930-
let per_peer_state = self.per_peer_state.write().unwrap();
4930+
let per_peer_state = self.per_peer_state.read().unwrap();
49314931
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
49324932
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
49334933
let peer_state = &mut *peer_state_lock;
@@ -5019,7 +5019,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
50195019
let res = loop {
50205020
let mut channel_state_lock = self.channel_state.lock().unwrap();
50215021
let channel_state = &mut *channel_state_lock;
5022-
let per_peer_state = self.per_peer_state.write().unwrap();
5022+
let per_peer_state = self.per_peer_state.read().unwrap();
50235023
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
50245024
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
50255025
let peer_state = &mut *peer_state_lock;
@@ -5086,7 +5086,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
50865086
fn internal_update_fee(&self, counterparty_node_id: &PublicKey, msg: &msgs::UpdateFee) -> Result<(), MsgHandleErrInternal> {
50875087
let mut channel_lock = self.channel_state.lock().unwrap();
50885088
let channel_state = &mut *channel_lock;
5089-
let per_peer_state = self.per_peer_state.write().unwrap();
5089+
let per_peer_state = self.per_peer_state.read().unwrap();
50905090
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
50915091
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
50925092
let peer_state = &mut *peer_state_lock;
@@ -5109,7 +5109,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
51095109
let mut channel_state_lock = self.channel_state.lock().unwrap();
51105110
let channel_state = &mut *channel_state_lock;
51115111

5112-
let per_peer_state = self.per_peer_state.write().unwrap();
5112+
let per_peer_state = self.per_peer_state.read().unwrap();
51135113
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
51145114
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
51155115
let peer_state = &mut *peer_state_lock;
@@ -5149,7 +5149,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
51495149
return Ok(NotifyOption::SkipPersist)
51505150
}
51515151
};
5152-
let per_peer_state = self.per_peer_state.write().unwrap();
5152+
let per_peer_state = self.per_peer_state.read().unwrap();
51535153
if let Some(peer_state_mutex) = per_peer_state.get(chan_counterparty_node_id) {
51545154
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
51555155
let peer_state = &mut *peer_state_lock;
@@ -5184,7 +5184,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
51845184
let mut channel_state_lock = self.channel_state.lock().unwrap();
51855185
let channel_state = &mut *channel_state_lock;
51865186

5187-
let per_peer_state = self.per_peer_state.write().unwrap();
5187+
let per_peer_state = self.per_peer_state.read().unwrap();
51885188
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
51895189
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
51905190
let peer_state = &mut *peer_state_lock;
@@ -5267,7 +5267,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
52675267
id_to_peer.get(&funding_outpoint.to_channel_id()).cloned()
52685268
};
52695269
if let Some(counterparty_node_id) = counterparty_node_id_opt {
5270-
let per_peer_state = self.per_peer_state.write().unwrap();
5270+
let per_peer_state = self.per_peer_state.read().unwrap();
52715271
let pending_msg_events = &mut channel_state.pending_msg_events;
52725272
if let Some(peer_state_mutex) = per_peer_state.get(&counterparty_node_id) {
52735273
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
@@ -6279,7 +6279,7 @@ impl<Signer: Sign, M: Deref , T: Deref , K: Deref , F: Deref , L: Deref >
62796279
{
62806280
// First check if we can advance the channel type and try again.
62816281
let mut channel_state = self.channel_state.lock().unwrap();
6282-
let per_peer_state = self.per_peer_state.write().unwrap();
6282+
let per_peer_state = self.per_peer_state.read().unwrap();
62836283
if let Some(peer_state_mutex) = per_peer_state.get(counterparty_node_id) {
62846284
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
62856285
let peer_state = &mut *peer_state_lock;
@@ -6732,7 +6732,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> Writeable f
67326732
let channel_state = self.channel_state.lock().unwrap();
67336733
let mut htlc_purposes: Vec<&events::PaymentPurpose> = Vec::new();
67346734
{
6735-
let per_peer_state = self.per_peer_state.write().unwrap();
6735+
let per_peer_state = self.per_peer_state.read().unwrap();
67366736
let mut unfunded_channels = 0;
67376737
let mut number_of_channels = 0;
67386738
for (_, peer_state_mutex) in per_peer_state.iter() {
@@ -7395,7 +7395,7 @@ impl<'a, Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
73957395
last_node_announcement_serial: AtomicUsize::new(last_node_announcement_serial as usize),
73967396
highest_seen_timestamp: AtomicUsize::new(highest_seen_timestamp as usize),
73977397

7398-
per_peer_state: RwLock::new(per_peer_state),
7398+
per_peer_state: FairRwLock::new(per_peer_state),
73997399

74007400
pending_events: Mutex::new(pending_events_read),
74017401
pending_background_events: Mutex::new(pending_background_events_read),

0 commit comments

Comments
 (0)