Skip to content

Commit e019ba4

Browse files
Store channels per-peer
1 parent 3435457 commit e019ba4

File tree

8 files changed

+1529
-1178
lines changed

8 files changed

+1529
-1178
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: 1425 additions & 1118 deletions
Large diffs are not rendered by default.

lightning/src/ln/functional_test_utils.rs

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -510,10 +510,9 @@ macro_rules! get_htlc_update_msgs {
510510

511511
#[cfg(test)]
512512
macro_rules! get_channel_ref {
513-
($node: expr, $lock: ident, $channel_id: expr) => {
513+
($node: expr, $peer_state_lock: ident, $channel_id: expr) => {
514514
{
515-
$lock = $node.node.channel_state.lock().unwrap();
516-
$lock.by_id.get_mut(&$channel_id).unwrap()
515+
$peer_state_lock.channel_by_id.get_mut(&$channel_id).unwrap()
517516
}
518517
}
519518
}
@@ -522,8 +521,9 @@ macro_rules! get_channel_ref {
522521
macro_rules! get_feerate {
523522
($node: expr, $counterparty_node: expr, $channel_id: expr) => {
524523
{
525-
let mut lock;
526-
let chan = get_channel_ref!($node, lock, $channel_id);
524+
let per_peer_lock = $node.node.per_peer_state.write().unwrap();
525+
let mut peer_state_lock = per_peer_lock.get(&$counterparty_node.node.get_our_node_id()).unwrap().lock().unwrap();
526+
let chan = get_channel_ref!($node, peer_state_lock, $channel_id);
527527
chan.get_feerate()
528528
}
529529
}
@@ -533,8 +533,9 @@ macro_rules! get_feerate {
533533
macro_rules! get_opt_anchors {
534534
($node: expr, $counterparty_node: expr, $channel_id: expr) => {
535535
{
536-
let mut lock;
537-
let chan = get_channel_ref!($node, lock, $channel_id);
536+
let per_peer_lock = $node.node.per_peer_state.write().unwrap();
537+
let mut peer_state_lock = per_peer_lock.get(&$counterparty_node.node.get_our_node_id()).unwrap().lock().unwrap();
538+
let chan = get_channel_ref!($node, peer_state_lock, $channel_id);
538539
chan.opt_anchors()
539540
}
540541
}
@@ -1690,9 +1691,10 @@ pub fn do_claim_payment_along_route<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>,
16901691
{
16911692
$node.node.handle_update_fulfill_htlc(&$prev_node.node.get_our_node_id(), &next_msgs.as_ref().unwrap().0);
16921693
let fee = {
1693-
let channel_state = $node.node.channel_state.lock().unwrap();
1694-
let channel = channel_state
1695-
.by_id.get(&next_msgs.as_ref().unwrap().0.channel_id).unwrap();
1694+
let per_peer_state = $node.node.per_peer_state.read().unwrap();
1695+
let peer_state = per_peer_state.get(&$prev_node.node.get_our_node_id())
1696+
.unwrap().lock().unwrap();
1697+
let channel = peer_state.channel_by_id.get(&next_msgs.as_ref().unwrap().0.channel_id).unwrap();
16961698
if let Some(prev_config) = channel.prev_config() {
16971699
prev_config.forwarding_fee_base_msat
16981700
} else {
@@ -2189,8 +2191,9 @@ pub fn get_announce_close_broadcast_events<'a, 'b, 'c>(nodes: &Vec<Node<'a, 'b,
21892191
#[cfg(test)]
21902192
macro_rules! get_channel_value_stat {
21912193
($node: expr, $counterparty_node: expr, $channel_id: expr) => {{
2192-
let chan_lock = $node.node.channel_state.lock().unwrap();
2193-
let chan = chan_lock.by_id.get(&$channel_id).unwrap();
2194+
let peer_state_lock = $node.node.per_peer_state.read().unwrap();
2195+
let chan_lock = peer_state_lock.get(&$counterparty_node.node.get_our_node_id()).unwrap().lock().unwrap();
2196+
let chan = chan_lock.channel_by_id.get(&$channel_id).unwrap();
21942197
chan.get_value_stat()
21952198
}}
21962199
}

0 commit comments

Comments
 (0)