Skip to content

Commit 7eda8c0

Browse files
committed
Remove RwLock from around NetworkGraph
Now that NetworkGraph uses interior mutability, the RwLock used around it in NetGraphMsgHandler is no longer needed. This allows for shared ownership without a lock.
1 parent 2294581 commit 7eda8c0

File tree

10 files changed

+207
-227
lines changed

10 files changed

+207
-227
lines changed

fuzz/src/full_stack.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ pub fn do_test(data: &[u8], logger: &Arc<dyn Logger>) {
427427
},
428428
4 => {
429429
let value = slice_to_be24(get_slice!(3)) as u64;
430-
let route = match get_route(&our_id, &net_graph_msg_handler.network_graph.read().unwrap(), &get_pubkey!(), None, None, &Vec::new(), value, 42, Arc::clone(&logger)) {
430+
let route = match get_route(&our_id, &net_graph_msg_handler.network_graph, &get_pubkey!(), None, None, &Vec::new(), value, 42, Arc::clone(&logger)) {
431431
Ok(route) => route,
432432
Err(_) => return,
433433
};
@@ -444,7 +444,7 @@ pub fn do_test(data: &[u8], logger: &Arc<dyn Logger>) {
444444
},
445445
15 => {
446446
let value = slice_to_be24(get_slice!(3)) as u64;
447-
let mut route = match get_route(&our_id, &net_graph_msg_handler.network_graph.read().unwrap(), &get_pubkey!(), None, None, &Vec::new(), value, 42, Arc::clone(&logger)) {
447+
let mut route = match get_route(&our_id, &net_graph_msg_handler.network_graph, &get_pubkey!(), None, None, &Vec::new(), value, 42, Arc::clone(&logger)) {
448448
Ok(route) => route,
449449
Err(_) => return,
450450
};

fuzz/src/router.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
160160
let logger: Arc<dyn Logger> = Arc::new(test_logger::TestLogger::new("".to_owned(), out));
161161

162162
let our_pubkey = get_pubkey!();
163-
let mut net_graph = NetworkGraph::new(genesis_block(Network::Bitcoin).header.block_hash());
163+
let net_graph = NetworkGraph::new(genesis_block(Network::Bitcoin).header.block_hash());
164164

165165
let mut node_pks = HashSet::new();
166166
let mut scid = 42;

lightning-invoice/src/utils.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,11 @@ mod test {
115115
let amt_msat = invoice.amount_pico_btc().unwrap() / 10;
116116
let first_hops = nodes[0].node.list_usable_channels();
117117
let last_hops = invoice.route_hints();
118-
let network_graph = nodes[0].net_graph_msg_handler.network_graph.read().unwrap();
118+
let network_graph = &nodes[0].net_graph_msg_handler.network_graph;
119119
let logger = test_utils::TestLogger::new();
120120
let route = router::get_route(
121121
&nodes[0].node.get_our_node_id(),
122-
&network_graph,
122+
network_graph,
123123
&invoice.recover_payee_pub_key(),
124124
Some(invoice.features().unwrap().clone()),
125125
Some(&first_hops.iter().collect::<Vec<_>>()),

lightning/src/ln/chanmon_update_fail_tests.rs

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

lightning/src/ln/channelmanager.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5416,7 +5416,7 @@ mod tests {
54165416

54175417
// First, send a partial MPP payment.
54185418
let net_graph_msg_handler = &nodes[0].net_graph_msg_handler;
5419-
let route = get_route(&nodes[0].node.get_our_node_id(), &net_graph_msg_handler.network_graph.read().unwrap(), &nodes[1].node.get_our_node_id(), Some(InvoiceFeatures::known()), None, &Vec::new(), 100_000, TEST_FINAL_CLTV, &logger).unwrap();
5419+
let route = get_route(&nodes[0].node.get_our_node_id(), &net_graph_msg_handler.network_graph, &nodes[1].node.get_our_node_id(), Some(InvoiceFeatures::known()), None, &Vec::new(), 100_000, TEST_FINAL_CLTV, &logger).unwrap();
54205420
let (payment_preimage, our_payment_hash, payment_secret) = get_payment_preimage_hash!(&nodes[1]);
54215421
// Use the utility function send_payment_along_path to send the payment with MPP data which
54225422
// indicates there are more HTLCs coming.
@@ -5523,7 +5523,7 @@ mod tests {
55235523
let (payment_preimage, payment_hash, _) = route_payment(&nodes[0], &expected_route, 100_000);
55245524

55255525
// Next, attempt a keysend payment and make sure it fails.
5526-
let route = get_route(&nodes[0].node.get_our_node_id(), &nodes[0].net_graph_msg_handler.network_graph.read().unwrap(), &expected_route.last().unwrap().node.get_our_node_id(), Some(InvoiceFeatures::known()), None, &Vec::new(), 100_000, TEST_FINAL_CLTV, &logger).unwrap();
5526+
let route = get_route(&nodes[0].node.get_our_node_id(), &nodes[0].net_graph_msg_handler.network_graph, &expected_route.last().unwrap().node.get_our_node_id(), Some(InvoiceFeatures::known()), None, &Vec::new(), 100_000, TEST_FINAL_CLTV, &logger).unwrap();
55275527
nodes[0].node.send_spontaneous_payment(&route, Some(payment_preimage)).unwrap();
55285528
check_added_monitors!(nodes[0], 1);
55295529
let mut events = nodes[0].node.get_and_clear_pending_msg_events();
@@ -5551,7 +5551,7 @@ mod tests {
55515551

55525552
// To start (2), send a keysend payment but don't claim it.
55535553
let payment_preimage = PaymentPreimage([42; 32]);
5554-
let route = get_route(&nodes[0].node.get_our_node_id(), &nodes[0].net_graph_msg_handler.network_graph.read().unwrap(), &expected_route.last().unwrap().node.get_our_node_id(), Some(InvoiceFeatures::known()), None, &Vec::new(), 100_000, TEST_FINAL_CLTV, &logger).unwrap();
5554+
let route = get_route(&nodes[0].node.get_our_node_id(), &nodes[0].net_graph_msg_handler.network_graph, &expected_route.last().unwrap().node.get_our_node_id(), Some(InvoiceFeatures::known()), None, &Vec::new(), 100_000, TEST_FINAL_CLTV, &logger).unwrap();
55555555
let payment_hash = nodes[0].node.send_spontaneous_payment(&route, Some(payment_preimage)).unwrap();
55565556
check_added_monitors!(nodes[0], 1);
55575557
let mut events = nodes[0].node.get_and_clear_pending_msg_events();
@@ -5603,9 +5603,9 @@ mod tests {
56035603
nodes[1].node.peer_connected(&payer_pubkey, &msgs::Init { features: InitFeatures::known() });
56045604

56055605
let _chan = create_chan_between_nodes(&nodes[0], &nodes[1], InitFeatures::known(), InitFeatures::known());
5606-
let network_graph = nodes[0].net_graph_msg_handler.network_graph.read().unwrap();
5606+
let network_graph = &nodes[0].net_graph_msg_handler.network_graph;
56075607
let first_hops = nodes[0].node.list_usable_channels();
5608-
let route = get_keysend_route(&payer_pubkey, &network_graph, &payee_pubkey,
5608+
let route = get_keysend_route(&payer_pubkey, network_graph, &payee_pubkey,
56095609
Some(&first_hops.iter().collect::<Vec<_>>()), &vec![], 10000, 40,
56105610
nodes[0].logger).unwrap();
56115611

@@ -5639,9 +5639,9 @@ mod tests {
56395639
nodes[1].node.peer_connected(&payer_pubkey, &msgs::Init { features: InitFeatures::known() });
56405640

56415641
let _chan = create_chan_between_nodes(&nodes[0], &nodes[1], InitFeatures::known(), InitFeatures::known());
5642-
let network_graph = nodes[0].net_graph_msg_handler.network_graph.read().unwrap();
5642+
let network_graph = &nodes[0].net_graph_msg_handler.network_graph;
56435643
let first_hops = nodes[0].node.list_usable_channels();
5644-
let route = get_keysend_route(&payer_pubkey, &network_graph, &payee_pubkey,
5644+
let route = get_keysend_route(&payer_pubkey, network_graph, &payee_pubkey,
56455645
Some(&first_hops.iter().collect::<Vec<_>>()), &vec![], 10000, 40,
56465646
nodes[0].logger).unwrap();
56475647

@@ -5678,7 +5678,7 @@ mod tests {
56785678
// Marshall an MPP route.
56795679
let (_, payment_hash, _) = get_payment_preimage_hash!(&nodes[3]);
56805680
let net_graph_msg_handler = &nodes[0].net_graph_msg_handler;
5681-
let mut route = get_route(&nodes[0].node.get_our_node_id(), &net_graph_msg_handler.network_graph.read().unwrap(), &nodes[3].node.get_our_node_id(), Some(InvoiceFeatures::known()), None, &[], 100000, TEST_FINAL_CLTV, &logger).unwrap();
5681+
let mut route = get_route(&nodes[0].node.get_our_node_id(), &net_graph_msg_handler.network_graph, &nodes[3].node.get_our_node_id(), Some(InvoiceFeatures::known()), None, &[], 100000, TEST_FINAL_CLTV, &logger).unwrap();
56825682
let path = route.paths[0].clone();
56835683
route.paths.push(path);
56845684
route.paths[0][0].pubkey = nodes[1].node.get_our_node_id();

lightning/src/ln/functional_test_utils.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -239,10 +239,10 @@ impl<'a, 'b, 'c> Drop for Node<'a, 'b, 'c> {
239239
// Check that if we serialize the Router, we can deserialize it again.
240240
{
241241
let mut w = test_utils::TestVecWriter(Vec::new());
242-
let network_graph_ser = self.net_graph_msg_handler.network_graph.read().unwrap();
242+
let network_graph_ser = &self.net_graph_msg_handler.network_graph;
243243
network_graph_ser.write(&mut w).unwrap();
244244
let network_graph_deser = <NetworkGraph>::read(&mut io::Cursor::new(&w.0)).unwrap();
245-
assert!(network_graph_deser == *self.net_graph_msg_handler.network_graph.read().unwrap());
245+
assert!(network_graph_deser == self.net_graph_msg_handler.network_graph);
246246
let net_graph_msg_handler = NetGraphMsgHandler::from_net_graph(
247247
Some(self.chain_source), self.logger, network_graph_deser
248248
);
@@ -948,7 +948,7 @@ macro_rules! get_route_and_payment_hash {
948948
let (payment_preimage, payment_hash, payment_secret) = get_payment_preimage_hash!($recv_node);
949949
let net_graph_msg_handler = &$send_node.net_graph_msg_handler;
950950
let route = get_route(&$send_node.node.get_our_node_id(),
951-
&net_graph_msg_handler.network_graph.read().unwrap(),
951+
&net_graph_msg_handler.network_graph,
952952
&$recv_node.node.get_our_node_id(), None, None, &Vec::new(), $recv_value, TEST_FINAL_CLTV, $send_node.logger).unwrap();
953953
(route, payment_hash, payment_preimage, payment_secret)
954954
}}
@@ -1237,7 +1237,7 @@ pub const TEST_FINAL_CLTV: u32 = 70;
12371237
pub fn route_payment<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expected_route: &[&Node<'a, 'b, 'c>], recv_value: u64) -> (PaymentPreimage, PaymentHash, PaymentSecret) {
12381238
let net_graph_msg_handler = &origin_node.net_graph_msg_handler;
12391239
let logger = test_utils::TestLogger::new();
1240-
let route = get_route(&origin_node.node.get_our_node_id(), &net_graph_msg_handler.network_graph.read().unwrap(),
1240+
let route = get_route(&origin_node.node.get_our_node_id(), &net_graph_msg_handler.network_graph,
12411241
&expected_route.last().unwrap().node.get_our_node_id(), Some(InvoiceFeatures::known()),
12421242
Some(&origin_node.node.list_usable_channels().iter().collect::<Vec<_>>()), &[],
12431243
recv_value, TEST_FINAL_CLTV, &logger).unwrap();
@@ -1253,7 +1253,7 @@ pub fn route_payment<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expected_route:
12531253
pub fn route_over_limit<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expected_route: &[&Node<'a, 'b, 'c>], recv_value: u64) {
12541254
let logger = test_utils::TestLogger::new();
12551255
let net_graph_msg_handler = &origin_node.net_graph_msg_handler;
1256-
let route = get_route(&origin_node.node.get_our_node_id(), &net_graph_msg_handler.network_graph.read().unwrap(), &expected_route.last().unwrap().node.get_our_node_id(), Some(InvoiceFeatures::known()), None, &Vec::new(), recv_value, TEST_FINAL_CLTV, &logger).unwrap();
1256+
let route = get_route(&origin_node.node.get_our_node_id(), &net_graph_msg_handler.network_graph, &expected_route.last().unwrap().node.get_our_node_id(), Some(InvoiceFeatures::known()), None, &Vec::new(), recv_value, TEST_FINAL_CLTV, &logger).unwrap();
12571257
assert_eq!(route.paths.len(), 1);
12581258
assert_eq!(route.paths[0].len(), expected_route.len());
12591259
for (node, hop) in expected_route.iter().zip(route.paths[0].iter()) {

0 commit comments

Comments
 (0)