From fbe9f47e12089c574db8f2a903e2cbdf4863605f Mon Sep 17 00:00:00 2001 From: Jeffrey Czyz Date: Fri, 3 Mar 2023 09:45:11 -0600 Subject: [PATCH 1/3] Reference `Router` in `ChannelManager` docs --- lightning/src/ln/channelmanager.rs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/lightning/src/ln/channelmanager.rs b/lightning/src/ln/channelmanager.rs index 0757e117ce2..ee438f36fe7 100644 --- a/lightning/src/ln/channelmanager.rs +++ b/lightning/src/ln/channelmanager.rs @@ -13,11 +13,9 @@ //! responsible for tracking which channels are open, HTLCs are in flight and reestablishing those //! upon reconnect to the relevant peer(s). //! -//! It does not manage routing logic (see [`find_route`] for that) nor does it manage constructing +//! It does not manage routing logic (see [`Router`] for that) nor does it manage constructing //! on-chain transactions (it only monitors the chain to watch for any force-closes that might //! imply it needs to fail HTLCs/payments/channels it manages). -//! -//! [`find_route`]: crate::routing::router::find_route use bitcoin::blockdata::block::BlockHeader; use bitcoin::blockdata::transaction::Transaction; @@ -1745,14 +1743,12 @@ where self.list_channels_with_filter(|_| true) } - /// Gets the list of usable channels, in random order. Useful as an argument to [`find_route`] - /// to ensure non-announced channels are used. + /// Gets the list of usable channels, in random order. Useful as an argument to + /// [`Router::find_route`] to ensure non-announced channels are used. /// /// These are guaranteed to have their [`ChannelDetails::is_usable`] value set to true, see the /// documentation for [`ChannelDetails::is_usable`] for more info on exactly what the criteria /// are. - /// - /// [`find_route`]: crate::routing::router::find_route pub fn list_usable_channels(&self) -> Vec { // Note we use is_live here instead of usable which leads to somewhat confused // internal/external nomenclature, but that's ok cause that's probably what the user From 8408b8d0e47b46fbec7042feb5fa16e25500c6a6 Mon Sep 17 00:00:00 2001 From: Jeffrey Czyz Date: Fri, 3 Mar 2023 10:09:58 -0600 Subject: [PATCH 2/3] Add more documentation about BlockSourceError Some BlockSource implementations provide more error details. Document this in case users want to examine it further. --- lightning-block-sync/src/lib.rs | 3 +++ lightning-block-sync/src/rpc.rs | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/lightning-block-sync/src/lib.rs b/lightning-block-sync/src/lib.rs index 189a68be065..0a7c655147f 100644 --- a/lightning-block-sync/src/lib.rs +++ b/lightning-block-sync/src/lib.rs @@ -132,6 +132,9 @@ impl BlockSourceError { } /// Converts the error into the underlying error. + /// + /// May contain an [`std::io::Error`] from the [`BlockSource`]. See implementations for further + /// details, if any. pub fn into_inner(self) -> Box { self.error } diff --git a/lightning-block-sync/src/rpc.rs b/lightning-block-sync/src/rpc.rs index 6b4397a6b0f..e1dc43c8f28 100644 --- a/lightning-block-sync/src/rpc.rs +++ b/lightning-block-sync/src/rpc.rs @@ -35,6 +35,9 @@ impl fmt::Display for RpcError { impl Error for RpcError {} /// A simple RPC client for calling methods using HTTP `POST`. +/// +/// Implements [`BlockSource`] and may return an `Err` containing [`RpcError`]. See +/// [`RpcClient::call_method`] for details. pub struct RpcClient { basic_auth: String, endpoint: HttpEndpoint, @@ -57,6 +60,9 @@ impl RpcClient { } /// Calls a method with the response encoded in JSON format and interpreted as type `T`. + /// + /// When an `Err` is returned, [`std::io::Error::into_inner`] may contain an [`RpcError`] if + /// [`std::io::Error::kind`] is [`std::io::ErrorKind::Other`]. pub async fn call_method(&self, method: &str, params: &[serde_json::Value]) -> std::io::Result where JsonResponse: TryFrom, Error = std::io::Error> + TryInto { let host = format!("{}:{}", self.endpoint.host(), self.endpoint.port()); From 1d1323a3d084d4e4466f76f07dba34e8023d51a6 Mon Sep 17 00:00:00 2001 From: Jeffrey Czyz Date: Fri, 3 Mar 2023 10:54:42 -0600 Subject: [PATCH 3/3] Fix build warnings --- fuzz/src/full_stack.rs | 2 +- lightning-background-processor/src/lib.rs | 4 +++- lightning-rapid-gossip-sync/src/processing.rs | 2 +- lightning/src/ln/channelmanager.rs | 2 +- lightning/src/ln/outbound_payment.rs | 11 +++++++++-- lightning/src/sync/debug_sync.rs | 4 ++-- lightning/src/sync/fairrwlock.rs | 1 + lightning/src/sync/test_lockorder_checks.rs | 1 - 8 files changed, 18 insertions(+), 9 deletions(-) diff --git a/fuzz/src/full_stack.rs b/fuzz/src/full_stack.rs index b96de0b9782..05ae32e4ca0 100644 --- a/fuzz/src/full_stack.rs +++ b/fuzz/src/full_stack.rs @@ -42,7 +42,7 @@ use lightning::ln::msgs::{self, DecodeError}; use lightning::ln::script::ShutdownScript; use lightning::routing::gossip::{P2PGossipSync, NetworkGraph}; use lightning::routing::utxo::UtxoLookup; -use lightning::routing::router::{find_route, InFlightHtlcs, PaymentParameters, Route, RouteHop, RouteParameters, Router}; +use lightning::routing::router::{find_route, InFlightHtlcs, PaymentParameters, Route, RouteParameters, Router}; use lightning::routing::scoring::FixedPenaltyScorer; use lightning::util::config::UserConfig; use lightning::util::errors::APIError; diff --git a/lightning-background-processor/src/lib.rs b/lightning-background-processor/src/lib.rs index f7f1296b98e..a6de0a62fb0 100644 --- a/lightning-background-processor/src/lib.rs +++ b/lightning-background-processor/src/lib.rs @@ -33,7 +33,9 @@ use lightning::routing::gossip::{NetworkGraph, P2PGossipSync}; use lightning::routing::utxo::UtxoLookup; use lightning::routing::router::Router; use lightning::routing::scoring::{Score, WriteableScore}; -use lightning::util::events::{Event, EventHandler, EventsProvider, PathFailure}; +use lightning::util::events::{Event, PathFailure}; +#[cfg(feature = "std")] +use lightning::util::events::{EventHandler, EventsProvider}; use lightning::util::logger::Logger; use lightning::util::persist::Persister; use lightning_rapid_gossip_sync::RapidGossipSync; diff --git a/lightning-rapid-gossip-sync/src/processing.rs b/lightning-rapid-gossip-sync/src/processing.rs index 8a52d234388..8d36dfe3884 100644 --- a/lightning-rapid-gossip-sync/src/processing.rs +++ b/lightning-rapid-gossip-sync/src/processing.rs @@ -42,7 +42,7 @@ impl>, L: Deref> RapidGossipSync where L &self, read_cursor: &mut R, ) -> Result { - #[allow(unused_mut)] + #[allow(unused_mut, unused_assignments)] let mut current_time_unix = None; #[cfg(all(feature = "std", not(test)))] { diff --git a/lightning/src/ln/channelmanager.rs b/lightning/src/ln/channelmanager.rs index ee438f36fe7..bceae0f8b34 100644 --- a/lightning/src/ln/channelmanager.rs +++ b/lightning/src/ln/channelmanager.rs @@ -3982,7 +3982,7 @@ where None => None }; - let mut peer_state_opt = counterparty_node_id_opt.as_ref().map( + let peer_state_opt = counterparty_node_id_opt.as_ref().map( |counterparty_node_id| per_peer_state.get(counterparty_node_id).map( |peer_mutex| peer_mutex.lock().unwrap() ) diff --git a/lightning/src/ln/outbound_payment.rs b/lightning/src/ln/outbound_payment.rs index 33ccecb4ca8..86b4de768f8 100644 --- a/lightning/src/ln/outbound_payment.rs +++ b/lightning/src/ln/outbound_payment.rs @@ -276,7 +276,11 @@ pub(crate) struct PaymentAttemptsUsingTime { /// it means the result of the first attempt is not known yet. pub(crate) count: usize, /// This field is only used when retry is `Retry::Timeout` which is only build with feature std - first_attempted_at: T + #[cfg(not(feature = "no-std"))] + first_attempted_at: T, + #[cfg(feature = "no-std")] + phantom: core::marker::PhantomData, + } #[cfg(not(any(feature = "no-std", test)))] @@ -290,7 +294,10 @@ impl PaymentAttemptsUsingTime { pub(crate) fn new() -> Self { PaymentAttemptsUsingTime { count: 0, - first_attempted_at: T::now() + #[cfg(not(feature = "no-std"))] + first_attempted_at: T::now(), + #[cfg(feature = "no-std")] + phantom: core::marker::PhantomData, } } } diff --git a/lightning/src/sync/debug_sync.rs b/lightning/src/sync/debug_sync.rs index 5b6acbcadd5..7ea1693b870 100644 --- a/lightning/src/sync/debug_sync.rs +++ b/lightning/src/sync/debug_sync.rs @@ -129,7 +129,7 @@ impl LockMetadata { // For each lock which is currently locked, check that no lock's locked-before // set includes the lock we're about to lock, which would imply a lockorder // inversion. - for (locked_idx, locked) in held.borrow().iter() { + for (locked_idx, _locked) in held.borrow().iter() { if *locked_idx == this.lock_idx { // Note that with `feature = "backtrace"` set, we may be looking at different // instances of the same lock. Still, doing so is quite risky, a total order @@ -143,7 +143,7 @@ impl LockMetadata { panic!("Tried to acquire a lock while it was held!"); } } - for (locked_idx, locked) in held.borrow().iter() { + for (_locked_idx, locked) in held.borrow().iter() { for (locked_dep_idx, _locked_dep) in locked.locked_before.lock().unwrap().iter() { if *locked_dep_idx == this.lock_idx && *locked_dep_idx != locked.lock_idx { #[cfg(feature = "backtrace")] diff --git a/lightning/src/sync/fairrwlock.rs b/lightning/src/sync/fairrwlock.rs index de609d5b3d7..23b8c23db28 100644 --- a/lightning/src/sync/fairrwlock.rs +++ b/lightning/src/sync/fairrwlock.rs @@ -45,6 +45,7 @@ impl FairRwLock { self.lock.read() } + #[allow(dead_code)] pub fn try_write(&self) -> TryLockResult> { self.lock.try_write() } diff --git a/lightning/src/sync/test_lockorder_checks.rs b/lightning/src/sync/test_lockorder_checks.rs index 6d72410bd59..96e497d4439 100644 --- a/lightning/src/sync/test_lockorder_checks.rs +++ b/lightning/src/sync/test_lockorder_checks.rs @@ -3,7 +3,6 @@ use crate::sync::debug_sync::{RwLock, Mutex}; use super::{LockHeldState, LockTestExt}; use std::sync::Arc; -use std::thread; #[test] #[should_panic]