@@ -552,7 +552,7 @@ use core::task;
552552/// # }
553553/// # struct EventHandler {}
554554/// # impl EventHandler {
555- /// # async fn handle_event(&self, _: lightning::events::Event) { }
555+ /// # async fn handle_event(&self, _: lightning::events::Event) -> Result<(), ()> { Ok(()) }
556556/// # }
557557/// # #[derive(Eq, PartialEq, Clone, Hash)]
558558/// # struct SocketDescriptor {}
@@ -646,7 +646,7 @@ pub async fn process_events_async<
646646 G : ' static + Deref < Target = NetworkGraph < L > > + Send + Sync ,
647647 L : ' static + Deref + Send + Sync ,
648648 P : ' static + Deref + Send + Sync ,
649- EventHandlerFuture : core:: future:: Future < Output = ( ) > ,
649+ EventHandlerFuture : core:: future:: Future < Output = Result < ( ) , ( ) > > ,
650650 EventHandler : Fn ( Event ) -> EventHandlerFuture ,
651651 PS : ' static + Deref + Send ,
652652 M : ' static + Deref < Target = ChainMonitor < <CM :: Target as AChannelManager >:: Signer , CF , T , F , L , P > > + Send + Sync ,
@@ -692,12 +692,13 @@ where
692692 if update_scorer ( scorer, & event, duration_since_epoch) {
693693 log_trace ! ( logger, "Persisting scorer after update" ) ;
694694 if let Err ( e) = persister. persist_scorer ( & scorer) {
695- log_error ! ( logger, "Error: Failed to persist scorer, check your disk and permissions {}" , e)
695+ log_error ! ( logger, "Error: Failed to persist scorer, check your disk and permissions {}" , e) ;
696+ return Err ( ( ) ) ;
696697 }
697698 }
698699 }
699700 }
700- event_handler ( event) . await ;
701+ event_handler ( event) . await
701702 }
702703 } ;
703704 define_run_body ! (
@@ -731,7 +732,7 @@ where
731732
732733#[ cfg( feature = "futures" ) ]
733734async fn process_onion_message_handler_events_async <
734- EventHandlerFuture : core:: future:: Future < Output = ( ) > ,
735+ EventHandlerFuture : core:: future:: Future < Output = Result < ( ) , ( ) > > ,
735736 EventHandler : Fn ( Event ) -> EventHandlerFuture ,
736737 PM : ' static + Deref + Send + Sync ,
737738> (
@@ -741,10 +742,11 @@ where
741742 PM :: Target : APeerManager + Send + Sync ,
742743{
743744 let events = core:: cell:: RefCell :: new ( Vec :: new ( ) ) ;
744- peer_manager. onion_message_handler ( ) . process_pending_events ( & |e| events. borrow_mut ( ) . push ( e) ) ;
745+ peer_manager. onion_message_handler ( ) . process_pending_events ( & |e| Ok ( events. borrow_mut ( ) . push ( e) ) ) ;
745746
746747 for event in events. into_inner ( ) {
747- handler ( event) . await
748+ // Ignore any errors as onion messages are best effort anyways.
749+ let _ = handler ( event) . await ;
748750 }
749751}
750752
@@ -846,7 +848,7 @@ impl BackgroundProcessor {
846848 }
847849 }
848850 }
849- event_handler. handle_event ( event) ;
851+ event_handler. handle_event ( event)
850852 } ;
851853 define_run_body ! (
852854 persister, chain_monitor, chain_monitor. process_pending_events( & event_handler) ,
@@ -1424,7 +1426,7 @@ mod tests {
14241426 // Initiate the background processors to watch each node.
14251427 let data_dir = nodes[ 0 ] . kv_store . get_data_dir ( ) ;
14261428 let persister = Arc :: new ( Persister :: new ( data_dir) ) ;
1427- let event_handler = |_: _ | { } ;
1429+ let event_handler = |_: _ | { Ok ( ( ) ) } ;
14281430 let bg_processor = BackgroundProcessor :: start ( persister, event_handler, nodes[ 0 ] . chain_monitor . clone ( ) , nodes[ 0 ] . node . clone ( ) , nodes[ 0 ] . p2p_gossip_sync ( ) , nodes[ 0 ] . peer_manager . clone ( ) , nodes[ 0 ] . logger . clone ( ) , Some ( nodes[ 0 ] . scorer . clone ( ) ) ) ;
14291431
14301432 macro_rules! check_persisted_data {
@@ -1491,7 +1493,7 @@ mod tests {
14911493 let ( _, nodes) = create_nodes ( 1 , "test_timer_tick_called" ) ;
14921494 let data_dir = nodes[ 0 ] . kv_store . get_data_dir ( ) ;
14931495 let persister = Arc :: new ( Persister :: new ( data_dir) ) ;
1494- let event_handler = |_: _ | { } ;
1496+ let event_handler = |_: _ | { Ok ( ( ) ) } ;
14951497 let bg_processor = BackgroundProcessor :: start ( persister, event_handler, nodes[ 0 ] . chain_monitor . clone ( ) , nodes[ 0 ] . node . clone ( ) , nodes[ 0 ] . no_gossip_sync ( ) , nodes[ 0 ] . peer_manager . clone ( ) , nodes[ 0 ] . logger . clone ( ) , Some ( nodes[ 0 ] . scorer . clone ( ) ) ) ;
14961498 loop {
14971499 let log_entries = nodes[ 0 ] . logger . lines . lock ( ) . unwrap ( ) ;
@@ -1520,7 +1522,7 @@ mod tests {
15201522
15211523 let data_dir = nodes[ 0 ] . kv_store . get_data_dir ( ) ;
15221524 let persister = Arc :: new ( Persister :: new ( data_dir) . with_manager_error ( std:: io:: ErrorKind :: Other , "test" ) ) ;
1523- let event_handler = |_: _ | { } ;
1525+ let event_handler = |_: _ | { Ok ( ( ) ) } ;
15241526 let bg_processor = BackgroundProcessor :: start ( persister, event_handler, nodes[ 0 ] . chain_monitor . clone ( ) , nodes[ 0 ] . node . clone ( ) , nodes[ 0 ] . no_gossip_sync ( ) , nodes[ 0 ] . peer_manager . clone ( ) , nodes[ 0 ] . logger . clone ( ) , Some ( nodes[ 0 ] . scorer . clone ( ) ) ) ;
15251527 match bg_processor. join ( ) {
15261528 Ok ( _) => panic ! ( "Expected error persisting manager" ) ,
@@ -1542,7 +1544,7 @@ mod tests {
15421544 let persister = Arc :: new ( Persister :: new ( data_dir) . with_manager_error ( std:: io:: ErrorKind :: Other , "test" ) ) ;
15431545
15441546 let bp_future = super :: process_events_async (
1545- persister, |_: _ | { async { } } , nodes[ 0 ] . chain_monitor . clone ( ) , nodes[ 0 ] . node . clone ( ) ,
1547+ persister, |_: _ | { async { Ok ( ( ) ) } } , nodes[ 0 ] . chain_monitor . clone ( ) , nodes[ 0 ] . node . clone ( ) ,
15461548 nodes[ 0 ] . rapid_gossip_sync ( ) , nodes[ 0 ] . peer_manager . clone ( ) , nodes[ 0 ] . logger . clone ( ) ,
15471549 Some ( nodes[ 0 ] . scorer . clone ( ) ) , move |dur : Duration | {
15481550 Box :: pin ( async move {
@@ -1566,7 +1568,7 @@ mod tests {
15661568 let ( _, nodes) = create_nodes ( 2 , "test_persist_network_graph_error" ) ;
15671569 let data_dir = nodes[ 0 ] . kv_store . get_data_dir ( ) ;
15681570 let persister = Arc :: new ( Persister :: new ( data_dir) . with_graph_error ( std:: io:: ErrorKind :: Other , "test" ) ) ;
1569- let event_handler = |_: _ | { } ;
1571+ let event_handler = |_: _ | { Ok ( ( ) ) } ;
15701572 let bg_processor = BackgroundProcessor :: start ( persister, event_handler, nodes[ 0 ] . chain_monitor . clone ( ) , nodes[ 0 ] . node . clone ( ) , nodes[ 0 ] . p2p_gossip_sync ( ) , nodes[ 0 ] . peer_manager . clone ( ) , nodes[ 0 ] . logger . clone ( ) , Some ( nodes[ 0 ] . scorer . clone ( ) ) ) ;
15711573
15721574 match bg_processor. stop ( ) {
@@ -1584,7 +1586,7 @@ mod tests {
15841586 let ( _, nodes) = create_nodes ( 2 , "test_persist_scorer_error" ) ;
15851587 let data_dir = nodes[ 0 ] . kv_store . get_data_dir ( ) ;
15861588 let persister = Arc :: new ( Persister :: new ( data_dir) . with_scorer_error ( std:: io:: ErrorKind :: Other , "test" ) ) ;
1587- let event_handler = |_: _ | { } ;
1589+ let event_handler = |_: _ | { Ok ( ( ) ) } ;
15881590 let bg_processor = BackgroundProcessor :: start ( persister, event_handler, nodes[ 0 ] . chain_monitor . clone ( ) , nodes[ 0 ] . node . clone ( ) , nodes[ 0 ] . no_gossip_sync ( ) , nodes[ 0 ] . peer_manager . clone ( ) , nodes[ 0 ] . logger . clone ( ) , Some ( nodes[ 0 ] . scorer . clone ( ) ) ) ;
15891591
15901592 match bg_processor. stop ( ) {
@@ -1606,11 +1608,14 @@ mod tests {
16061608 // Set up a background event handler for FundingGenerationReady events.
16071609 let ( funding_generation_send, funding_generation_recv) = std:: sync:: mpsc:: sync_channel ( 1 ) ;
16081610 let ( channel_pending_send, channel_pending_recv) = std:: sync:: mpsc:: sync_channel ( 1 ) ;
1609- let event_handler = move |event : Event | match event {
1610- Event :: FundingGenerationReady { .. } => funding_generation_send. send ( handle_funding_generation_ready ! ( event, channel_value) ) . unwrap ( ) ,
1611- Event :: ChannelPending { .. } => channel_pending_send. send ( ( ) ) . unwrap ( ) ,
1612- Event :: ChannelReady { .. } => { } ,
1613- _ => panic ! ( "Unexpected event: {:?}" , event) ,
1611+ let event_handler = move |event : Event | {
1612+ match event {
1613+ Event :: FundingGenerationReady { .. } => funding_generation_send. send ( handle_funding_generation_ready ! ( event, channel_value) ) . unwrap ( ) ,
1614+ Event :: ChannelPending { .. } => channel_pending_send. send ( ( ) ) . unwrap ( ) ,
1615+ Event :: ChannelReady { .. } => { } ,
1616+ _ => panic ! ( "Unexpected event: {:?}" , event) ,
1617+ }
1618+ Ok ( ( ) )
16141619 } ;
16151620
16161621 let bg_processor = BackgroundProcessor :: start ( persister, event_handler, nodes[ 0 ] . chain_monitor . clone ( ) , nodes[ 0 ] . node . clone ( ) , nodes[ 0 ] . no_gossip_sync ( ) , nodes[ 0 ] . peer_manager . clone ( ) , nodes[ 0 ] . logger . clone ( ) , Some ( nodes[ 0 ] . scorer . clone ( ) ) ) ;
@@ -1646,11 +1651,14 @@ mod tests {
16461651
16471652 // Set up a background event handler for SpendableOutputs events.
16481653 let ( sender, receiver) = std:: sync:: mpsc:: sync_channel ( 1 ) ;
1649- let event_handler = move |event : Event | match event {
1650- Event :: SpendableOutputs { .. } => sender. send ( event) . unwrap ( ) ,
1651- Event :: ChannelReady { .. } => { } ,
1652- Event :: ChannelClosed { .. } => { } ,
1653- _ => panic ! ( "Unexpected event: {:?}" , event) ,
1654+ let event_handler = move |event : Event | {
1655+ match event {
1656+ Event :: SpendableOutputs { .. } => sender. send ( event) . unwrap ( ) ,
1657+ Event :: ChannelReady { .. } => { } ,
1658+ Event :: ChannelClosed { .. } => { } ,
1659+ _ => panic ! ( "Unexpected event: {:?}" , event) ,
1660+ }
1661+ Ok ( ( ) )
16541662 } ;
16551663 let persister = Arc :: new ( Persister :: new ( data_dir) ) ;
16561664 let bg_processor = BackgroundProcessor :: start ( persister, event_handler, nodes[ 0 ] . chain_monitor . clone ( ) , nodes[ 0 ] . node . clone ( ) , nodes[ 0 ] . no_gossip_sync ( ) , nodes[ 0 ] . peer_manager . clone ( ) , nodes[ 0 ] . logger . clone ( ) , Some ( nodes[ 0 ] . scorer . clone ( ) ) ) ;
@@ -1763,7 +1771,7 @@ mod tests {
17631771 let ( _, nodes) = create_nodes ( 2 , "test_scorer_persistence" ) ;
17641772 let data_dir = nodes[ 0 ] . kv_store . get_data_dir ( ) ;
17651773 let persister = Arc :: new ( Persister :: new ( data_dir) ) ;
1766- let event_handler = |_: _ | { } ;
1774+ let event_handler = |_: _ | { Ok ( ( ) ) } ;
17671775 let bg_processor = BackgroundProcessor :: start ( persister, event_handler, nodes[ 0 ] . chain_monitor . clone ( ) , nodes[ 0 ] . node . clone ( ) , nodes[ 0 ] . no_gossip_sync ( ) , nodes[ 0 ] . peer_manager . clone ( ) , nodes[ 0 ] . logger . clone ( ) , Some ( nodes[ 0 ] . scorer . clone ( ) ) ) ;
17681776
17691777 loop {
@@ -1836,7 +1844,7 @@ mod tests {
18361844 let data_dir = nodes[ 0 ] . kv_store . get_data_dir ( ) ;
18371845 let persister = Arc :: new ( Persister :: new ( data_dir) . with_graph_persistence_notifier ( sender) ) ;
18381846
1839- let event_handler = |_: _ | { } ;
1847+ let event_handler = |_: _ | { Ok ( ( ) ) } ;
18401848 let background_processor = BackgroundProcessor :: start ( persister, event_handler, nodes[ 0 ] . chain_monitor . clone ( ) , nodes[ 0 ] . node . clone ( ) , nodes[ 0 ] . rapid_gossip_sync ( ) , nodes[ 0 ] . peer_manager . clone ( ) , nodes[ 0 ] . logger . clone ( ) , Some ( nodes[ 0 ] . scorer . clone ( ) ) ) ;
18411849
18421850 do_test_not_pruning_network_graph_until_graph_sync_completion ! ( nodes,
@@ -1857,7 +1865,7 @@ mod tests {
18571865
18581866 let ( exit_sender, exit_receiver) = tokio:: sync:: watch:: channel ( ( ) ) ;
18591867 let bp_future = super :: process_events_async (
1860- persister, |_: _ | { async { } } , nodes[ 0 ] . chain_monitor . clone ( ) , nodes[ 0 ] . node . clone ( ) ,
1868+ persister, |_: _ | { async { Ok ( ( ) ) } } , nodes[ 0 ] . chain_monitor . clone ( ) , nodes[ 0 ] . node . clone ( ) ,
18611869 nodes[ 0 ] . rapid_gossip_sync ( ) , nodes[ 0 ] . peer_manager . clone ( ) , nodes[ 0 ] . logger . clone ( ) ,
18621870 Some ( nodes[ 0 ] . scorer . clone ( ) ) , move |dur : Duration | {
18631871 let mut exit_receiver = exit_receiver. clone ( ) ;
@@ -1984,12 +1992,15 @@ mod tests {
19841992 #[ test]
19851993 fn test_payment_path_scoring ( ) {
19861994 let ( sender, receiver) = std:: sync:: mpsc:: sync_channel ( 1 ) ;
1987- let event_handler = move |event : Event | match event {
1988- Event :: PaymentPathFailed { .. } => sender. send ( event) . unwrap ( ) ,
1989- Event :: PaymentPathSuccessful { .. } => sender. send ( event) . unwrap ( ) ,
1990- Event :: ProbeSuccessful { .. } => sender. send ( event) . unwrap ( ) ,
1991- Event :: ProbeFailed { .. } => sender. send ( event) . unwrap ( ) ,
1992- _ => panic ! ( "Unexpected event: {:?}" , event) ,
1995+ let event_handler = move |event : Event | {
1996+ match event {
1997+ Event :: PaymentPathFailed { .. } => sender. send ( event) . unwrap ( ) ,
1998+ Event :: PaymentPathSuccessful { .. } => sender. send ( event) . unwrap ( ) ,
1999+ Event :: ProbeSuccessful { .. } => sender. send ( event) . unwrap ( ) ,
2000+ Event :: ProbeFailed { .. } => sender. send ( event) . unwrap ( ) ,
2001+ _ => panic ! ( "Unexpected event: {:?}" , event) ,
2002+ }
2003+ Ok ( ( ) )
19932004 } ;
19942005
19952006 let ( _, nodes) = create_nodes ( 1 , "test_payment_path_scoring" ) ;
@@ -2022,6 +2033,7 @@ mod tests {
20222033 Event :: ProbeFailed { .. } => { sender_ref. send ( event) . await . unwrap ( ) } ,
20232034 _ => panic ! ( "Unexpected event: {:?}" , event) ,
20242035 }
2036+ Ok ( ( ) )
20252037 }
20262038 } ;
20272039
0 commit comments