Skip to content

Commit 74a0f1e

Browse files
Store channels per-peer
1 parent 19bbb20 commit 74a0f1e

8 files changed

+1423
-1139
lines changed

lightning/src/ln/chanmon_update_fail_tests.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,9 @@ fn test_monitor_and_persister_update_fail() {
130130
let updates = get_htlc_update_msgs!(nodes[1], nodes[0].node.get_our_node_id());
131131
assert_eq!(updates.update_fulfill_htlcs.len(), 1);
132132
nodes[0].node.handle_update_fulfill_htlc(&nodes[1].node.get_our_node_id(), &updates.update_fulfill_htlcs[0]);
133-
if let Some(ref mut channel) = nodes[0].node.channel_state.lock().unwrap().by_id.get_mut(&chan.2) {
133+
if let Some(ref mut channel) = nodes[0].node.per_peer_state.write().unwrap().get_mut(&nodes[1].node.get_our_node_id())
134+
.unwrap().lock().unwrap().channel_by_id.get_mut(&chan.2)
135+
{
134136
if let Ok((_, _, update)) = channel.commitment_signed(&updates.commitment_signed, &node_cfgs[0].logger) {
135137
// Check that even though the persister is returning a TemporaryFailure,
136138
// because the update is bogus, ultimately the error that's returned
@@ -1411,9 +1413,12 @@ fn monitor_failed_no_reestablish_response() {
14111413
let mut nodes = create_network(2, &node_cfgs, &node_chanmgrs);
14121414
let channel_id = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known()).2;
14131415
{
1414-
let mut lock;
1415-
get_channel_ref!(nodes[0], lock, channel_id).announcement_sigs_state = AnnouncementSigsState::PeerReceived;
1416-
get_channel_ref!(nodes[1], lock, channel_id).announcement_sigs_state = AnnouncementSigsState::PeerReceived;
1416+
let node_0_per_peer_lock = nodes[0].node.per_peer_state.write().unwrap();
1417+
let mut node_0_peer_state_lock = node_0_per_peer_lock.get(&nodes[1].node.get_our_node_id()).unwrap().lock().unwrap();
1418+
let node_1_per_peer_lock = nodes[1].node.per_peer_state.write().unwrap();
1419+
let mut node_1_peer_state_lock = node_1_per_peer_lock.get(&nodes[0].node.get_our_node_id()).unwrap().lock().unwrap();
1420+
get_channel_ref!(nodes[0], node_0_peer_state_lock, channel_id).announcement_sigs_state = AnnouncementSigsState::PeerReceived;
1421+
get_channel_ref!(nodes[1], node_1_peer_state_lock, channel_id).announcement_sigs_state = AnnouncementSigsState::PeerReceived;
14171422
}
14181423

14191424
// Route the payment and deliver the initial commitment_signed (with a monitor update failure

lightning/src/ln/channelmanager.rs

Lines changed: 1315 additions & 1076 deletions
Large diffs are not rendered by default.

lightning/src/ln/functional_test_utils.rs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -511,10 +511,9 @@ macro_rules! get_htlc_update_msgs {
511511

512512
#[cfg(test)]
513513
macro_rules! get_channel_ref {
514-
($node: expr, $lock: ident, $channel_id: expr) => {
514+
($node: expr, $peer_state_lock: ident, $channel_id: expr) => {
515515
{
516-
$lock = $node.node.channel_state.lock().unwrap();
517-
$lock.by_id.get_mut(&$channel_id).unwrap()
516+
$peer_state_lock.channel_by_id.get_mut(&$channel_id).unwrap()
518517
}
519518
}
520519
}
@@ -523,8 +522,9 @@ macro_rules! get_channel_ref {
523522
macro_rules! get_feerate {
524523
($node: expr, $counterparty_node: expr, $channel_id: expr) => {
525524
{
526-
let mut lock;
527-
let chan = get_channel_ref!($node, lock, $channel_id);
525+
let per_peer_lock = $node.node.per_peer_state.write().unwrap();
526+
let mut peer_state_lock = per_peer_lock.get(&$counterparty_node.node.get_our_node_id()).unwrap().lock().unwrap();
527+
let chan = get_channel_ref!($node, peer_state_lock, $channel_id);
528528
chan.get_feerate()
529529
}
530530
}
@@ -534,8 +534,9 @@ macro_rules! get_feerate {
534534
macro_rules! get_opt_anchors {
535535
($node: expr, $counterparty_node: expr, $channel_id: expr) => {
536536
{
537-
let mut lock;
538-
let chan = get_channel_ref!($node, lock, $channel_id);
537+
let per_peer_lock = $node.node.per_peer_state.write().unwrap();
538+
let mut peer_state_lock = per_peer_lock.get(&$counterparty_node.node.get_our_node_id()).unwrap().lock().unwrap();
539+
let chan = get_channel_ref!($node, peer_state_lock, $channel_id);
539540
chan.opt_anchors()
540541
}
541542
}
@@ -1680,7 +1681,9 @@ pub fn do_claim_payment_along_route<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>,
16801681
($node: expr, $prev_node: expr, $next_node: expr, $new_msgs: expr) => {
16811682
{
16821683
$node.node.handle_update_fulfill_htlc(&$prev_node.node.get_our_node_id(), &next_msgs.as_ref().unwrap().0);
1683-
let fee = $node.node.channel_state.lock().unwrap().by_id.get(&next_msgs.as_ref().unwrap().0.channel_id).unwrap().config.forwarding_fee_base_msat;
1684+
let fee = $node.node.per_peer_state.read().unwrap().get(&$prev_node.node.get_our_node_id())
1685+
.unwrap().lock().unwrap().channel_by_id.get(&next_msgs.as_ref().unwrap().0.channel_id)
1686+
.unwrap().config.forwarding_fee_base_msat;
16841687
expect_payment_forwarded!($node, $next_node, $prev_node, Some(fee as u64), false, false);
16851688
expected_total_fee_msat += fee as u64;
16861689
check_added_monitors!($node, 1);
@@ -2172,8 +2175,9 @@ pub fn get_announce_close_broadcast_events<'a, 'b, 'c>(nodes: &Vec<Node<'a, 'b,
21722175
#[cfg(test)]
21732176
macro_rules! get_channel_value_stat {
21742177
($node: expr, $counterparty_node: expr, $channel_id: expr) => {{
2175-
let chan_lock = $node.node.channel_state.lock().unwrap();
2176-
let chan = chan_lock.by_id.get(&$channel_id).unwrap();
2178+
let peer_state_lock = $node.node.per_peer_state.read().unwrap();
2179+
let chan_lock = peer_state_lock.get(&$counterparty_node.node.get_our_node_id()).unwrap().lock().unwrap();
2180+
let chan = chan_lock.channel_by_id.get(&$channel_id).unwrap();
21772181
chan.get_value_stat()
21782182
}}
21792183
}

0 commit comments

Comments
 (0)