@@ -552,7 +552,7 @@ use core::task;
552
552
/// # }
553
553
/// # struct EventHandler {}
554
554
/// # impl EventHandler {
555
- /// # async fn handle_event(&self, _: lightning::events::Event) { }
555
+ /// # async fn handle_event(&self, _: lightning::events::Event) -> Result<(), ()> { Ok(()) }
556
556
/// # }
557
557
/// # #[derive(Eq, PartialEq, Clone, Hash)]
558
558
/// # struct SocketDescriptor {}
@@ -646,7 +646,7 @@ pub async fn process_events_async<
646
646
G : ' static + Deref < Target = NetworkGraph < L > > + Send + Sync ,
647
647
L : ' static + Deref + Send + Sync ,
648
648
P : ' static + Deref + Send + Sync ,
649
- EventHandlerFuture : core:: future:: Future < Output = ( ) > ,
649
+ EventHandlerFuture : core:: future:: Future < Output = Result < ( ) , ( ) > > ,
650
650
EventHandler : Fn ( Event ) -> EventHandlerFuture ,
651
651
PS : ' static + Deref + Send ,
652
652
M : ' static + Deref < Target = ChainMonitor < <CM :: Target as AChannelManager >:: Signer , CF , T , F , L , P > > + Send + Sync ,
@@ -692,12 +692,13 @@ where
692
692
if update_scorer ( scorer, & event, duration_since_epoch) {
693
693
log_trace ! ( logger, "Persisting scorer after update" ) ;
694
694
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 ( ( ) ) ;
696
697
}
697
698
}
698
699
}
699
700
}
700
- event_handler ( event) . await ;
701
+ event_handler ( event) . await
701
702
}
702
703
} ;
703
704
define_run_body ! (
@@ -731,7 +732,7 @@ where
731
732
732
733
#[ cfg( feature = "futures" ) ]
733
734
async fn process_onion_message_handler_events_async <
734
- EventHandlerFuture : core:: future:: Future < Output = ( ) > ,
735
+ EventHandlerFuture : core:: future:: Future < Output = Result < ( ) , ( ) > > ,
735
736
EventHandler : Fn ( Event ) -> EventHandlerFuture ,
736
737
PM : ' static + Deref + Send + Sync ,
737
738
> (
@@ -741,10 +742,11 @@ where
741
742
PM :: Target : APeerManager + Send + Sync ,
742
743
{
743
744
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) ) ) ;
745
746
746
747
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 ;
748
750
}
749
751
}
750
752
@@ -846,7 +848,7 @@ impl BackgroundProcessor {
846
848
}
847
849
}
848
850
}
849
- event_handler. handle_event ( event) ;
851
+ event_handler. handle_event ( event)
850
852
} ;
851
853
define_run_body ! (
852
854
persister, chain_monitor, chain_monitor. process_pending_events( & event_handler) ,
@@ -1380,7 +1382,7 @@ mod tests {
1380
1382
// Initiate the background processors to watch each node.
1381
1383
let data_dir = nodes[ 0 ] . kv_store . get_data_dir ( ) ;
1382
1384
let persister = Arc :: new ( Persister :: new ( data_dir) ) ;
1383
- let event_handler = |_: _ | { } ;
1385
+ let event_handler = |_: _ | { Ok ( ( ) ) } ;
1384
1386
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 ( ) ) ) ;
1385
1387
1386
1388
macro_rules! check_persisted_data {
@@ -1447,7 +1449,7 @@ mod tests {
1447
1449
let ( _, nodes) = create_nodes ( 1 , "test_timer_tick_called" ) ;
1448
1450
let data_dir = nodes[ 0 ] . kv_store . get_data_dir ( ) ;
1449
1451
let persister = Arc :: new ( Persister :: new ( data_dir) ) ;
1450
- let event_handler = |_: _ | { } ;
1452
+ let event_handler = |_: _ | { Ok ( ( ) ) } ;
1451
1453
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 ( ) ) ) ;
1452
1454
loop {
1453
1455
let log_entries = nodes[ 0 ] . logger . lines . lock ( ) . unwrap ( ) ;
@@ -1476,7 +1478,7 @@ mod tests {
1476
1478
1477
1479
let data_dir = nodes[ 0 ] . kv_store . get_data_dir ( ) ;
1478
1480
let persister = Arc :: new ( Persister :: new ( data_dir) . with_manager_error ( std:: io:: ErrorKind :: Other , "test" ) ) ;
1479
- let event_handler = |_: _ | { } ;
1481
+ let event_handler = |_: _ | { Ok ( ( ) ) } ;
1480
1482
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 ( ) ) ) ;
1481
1483
match bg_processor. join ( ) {
1482
1484
Ok ( _) => panic ! ( "Expected error persisting manager" ) ,
@@ -1498,7 +1500,7 @@ mod tests {
1498
1500
let persister = Arc :: new ( Persister :: new ( data_dir) . with_manager_error ( std:: io:: ErrorKind :: Other , "test" ) ) ;
1499
1501
1500
1502
let bp_future = super :: process_events_async (
1501
- persister, |_: _ | { async { } } , nodes[ 0 ] . chain_monitor . clone ( ) , nodes[ 0 ] . node . clone ( ) ,
1503
+ persister, |_: _ | { async { Ok ( ( ) ) } } , nodes[ 0 ] . chain_monitor . clone ( ) , nodes[ 0 ] . node . clone ( ) ,
1502
1504
nodes[ 0 ] . rapid_gossip_sync ( ) , nodes[ 0 ] . peer_manager . clone ( ) , nodes[ 0 ] . logger . clone ( ) ,
1503
1505
Some ( nodes[ 0 ] . scorer . clone ( ) ) , move |dur : Duration | {
1504
1506
Box :: pin ( async move {
@@ -1522,7 +1524,7 @@ mod tests {
1522
1524
let ( _, nodes) = create_nodes ( 2 , "test_persist_network_graph_error" ) ;
1523
1525
let data_dir = nodes[ 0 ] . kv_store . get_data_dir ( ) ;
1524
1526
let persister = Arc :: new ( Persister :: new ( data_dir) . with_graph_error ( std:: io:: ErrorKind :: Other , "test" ) ) ;
1525
- let event_handler = |_: _ | { } ;
1527
+ let event_handler = |_: _ | { Ok ( ( ) ) } ;
1526
1528
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 ( ) ) ) ;
1527
1529
1528
1530
match bg_processor. stop ( ) {
@@ -1540,7 +1542,7 @@ mod tests {
1540
1542
let ( _, nodes) = create_nodes ( 2 , "test_persist_scorer_error" ) ;
1541
1543
let data_dir = nodes[ 0 ] . kv_store . get_data_dir ( ) ;
1542
1544
let persister = Arc :: new ( Persister :: new ( data_dir) . with_scorer_error ( std:: io:: ErrorKind :: Other , "test" ) ) ;
1543
- let event_handler = |_: _ | { } ;
1545
+ let event_handler = |_: _ | { Ok ( ( ) ) } ;
1544
1546
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 ( ) ) ) ;
1545
1547
1546
1548
match bg_processor. stop ( ) {
@@ -1562,11 +1564,14 @@ mod tests {
1562
1564
// Set up a background event handler for FundingGenerationReady events.
1563
1565
let ( funding_generation_send, funding_generation_recv) = std:: sync:: mpsc:: sync_channel ( 1 ) ;
1564
1566
let ( channel_pending_send, channel_pending_recv) = std:: sync:: mpsc:: sync_channel ( 1 ) ;
1565
- let event_handler = move |event : Event | match event {
1566
- Event :: FundingGenerationReady { .. } => funding_generation_send. send ( handle_funding_generation_ready ! ( event, channel_value) ) . unwrap ( ) ,
1567
- Event :: ChannelPending { .. } => channel_pending_send. send ( ( ) ) . unwrap ( ) ,
1568
- Event :: ChannelReady { .. } => { } ,
1569
- _ => panic ! ( "Unexpected event: {:?}" , event) ,
1567
+ let event_handler = move |event : Event | {
1568
+ match event {
1569
+ Event :: FundingGenerationReady { .. } => funding_generation_send. send ( handle_funding_generation_ready ! ( event, channel_value) ) . unwrap ( ) ,
1570
+ Event :: ChannelPending { .. } => channel_pending_send. send ( ( ) ) . unwrap ( ) ,
1571
+ Event :: ChannelReady { .. } => { } ,
1572
+ _ => panic ! ( "Unexpected event: {:?}" , event) ,
1573
+ }
1574
+ Ok ( ( ) )
1570
1575
} ;
1571
1576
1572
1577
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 ( ) ) ) ;
@@ -1599,11 +1604,14 @@ mod tests {
1599
1604
1600
1605
// Set up a background event handler for SpendableOutputs events.
1601
1606
let ( sender, receiver) = std:: sync:: mpsc:: sync_channel ( 1 ) ;
1602
- let event_handler = move |event : Event | match event {
1603
- Event :: SpendableOutputs { .. } => sender. send ( event) . unwrap ( ) ,
1604
- Event :: ChannelReady { .. } => { } ,
1605
- Event :: ChannelClosed { .. } => { } ,
1606
- _ => panic ! ( "Unexpected event: {:?}" , event) ,
1607
+ let event_handler = move |event : Event | {
1608
+ match event {
1609
+ Event :: SpendableOutputs { .. } => sender. send ( event) . unwrap ( ) ,
1610
+ Event :: ChannelReady { .. } => { } ,
1611
+ Event :: ChannelClosed { .. } => { } ,
1612
+ _ => panic ! ( "Unexpected event: {:?}" , event) ,
1613
+ }
1614
+ Ok ( ( ) )
1607
1615
} ;
1608
1616
let persister = Arc :: new ( Persister :: new ( data_dir) ) ;
1609
1617
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 ( ) ) ) ;
@@ -1631,7 +1639,7 @@ mod tests {
1631
1639
let ( _, nodes) = create_nodes ( 2 , "test_scorer_persistence" ) ;
1632
1640
let data_dir = nodes[ 0 ] . kv_store . get_data_dir ( ) ;
1633
1641
let persister = Arc :: new ( Persister :: new ( data_dir) ) ;
1634
- let event_handler = |_: _ | { } ;
1642
+ let event_handler = |_: _ | { Ok ( ( ) ) } ;
1635
1643
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 ( ) ) ) ;
1636
1644
1637
1645
loop {
@@ -1704,7 +1712,7 @@ mod tests {
1704
1712
let data_dir = nodes[ 0 ] . kv_store . get_data_dir ( ) ;
1705
1713
let persister = Arc :: new ( Persister :: new ( data_dir) . with_graph_persistence_notifier ( sender) ) ;
1706
1714
1707
- let event_handler = |_: _ | { } ;
1715
+ let event_handler = |_: _ | { Ok ( ( ) ) } ;
1708
1716
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 ( ) ) ) ;
1709
1717
1710
1718
do_test_not_pruning_network_graph_until_graph_sync_completion ! ( nodes,
@@ -1725,7 +1733,7 @@ mod tests {
1725
1733
1726
1734
let ( exit_sender, exit_receiver) = tokio:: sync:: watch:: channel ( ( ) ) ;
1727
1735
let bp_future = super :: process_events_async (
1728
- persister, |_: _ | { async { } } , nodes[ 0 ] . chain_monitor . clone ( ) , nodes[ 0 ] . node . clone ( ) ,
1736
+ persister, |_: _ | { async { Ok ( ( ) ) } } , nodes[ 0 ] . chain_monitor . clone ( ) , nodes[ 0 ] . node . clone ( ) ,
1729
1737
nodes[ 0 ] . rapid_gossip_sync ( ) , nodes[ 0 ] . peer_manager . clone ( ) , nodes[ 0 ] . logger . clone ( ) ,
1730
1738
Some ( nodes[ 0 ] . scorer . clone ( ) ) , move |dur : Duration | {
1731
1739
let mut exit_receiver = exit_receiver. clone ( ) ;
@@ -1852,12 +1860,15 @@ mod tests {
1852
1860
#[ test]
1853
1861
fn test_payment_path_scoring ( ) {
1854
1862
let ( sender, receiver) = std:: sync:: mpsc:: sync_channel ( 1 ) ;
1855
- let event_handler = move |event : Event | match event {
1856
- Event :: PaymentPathFailed { .. } => sender. send ( event) . unwrap ( ) ,
1857
- Event :: PaymentPathSuccessful { .. } => sender. send ( event) . unwrap ( ) ,
1858
- Event :: ProbeSuccessful { .. } => sender. send ( event) . unwrap ( ) ,
1859
- Event :: ProbeFailed { .. } => sender. send ( event) . unwrap ( ) ,
1860
- _ => panic ! ( "Unexpected event: {:?}" , event) ,
1863
+ let event_handler = move |event : Event | {
1864
+ match event {
1865
+ Event :: PaymentPathFailed { .. } => sender. send ( event) . unwrap ( ) ,
1866
+ Event :: PaymentPathSuccessful { .. } => sender. send ( event) . unwrap ( ) ,
1867
+ Event :: ProbeSuccessful { .. } => sender. send ( event) . unwrap ( ) ,
1868
+ Event :: ProbeFailed { .. } => sender. send ( event) . unwrap ( ) ,
1869
+ _ => panic ! ( "Unexpected event: {:?}" , event) ,
1870
+ }
1871
+ Ok ( ( ) )
1861
1872
} ;
1862
1873
1863
1874
let ( _, nodes) = create_nodes ( 1 , "test_payment_path_scoring" ) ;
@@ -1890,6 +1901,7 @@ mod tests {
1890
1901
Event :: ProbeFailed { .. } => { sender_ref. send ( event) . await . unwrap ( ) } ,
1891
1902
_ => panic ! ( "Unexpected event: {:?}" , event) ,
1892
1903
}
1904
+ Ok ( ( ) )
1893
1905
}
1894
1906
} ;
1895
1907
0 commit comments