@@ -465,24 +465,14 @@ where
465465 /// It is extremely important that your [`KVStore::read`] implementation uses the
466466 /// [`io::ErrorKind::NotFound`] variant correctly. For more information, please see the
467467 /// documentation for [`MonitorUpdatingPersister`].
468- pub fn read_all_channel_monitors_with_updates < B : Deref , F : Deref > (
469- & self , broadcaster : & B , fee_estimator : & F ,
470- ) -> Result < Vec < ( BlockHash , ChannelMonitor < <SP :: Target as SignerProvider >:: EcdsaSigner > ) > , io:: Error >
471- where
472- B :: Target : BroadcasterInterface ,
473- F :: Target : FeeEstimator ,
474- {
468+ pub fn read_all_channel_monitors_with_updates ( & self ) -> Result < Vec < ( BlockHash , ChannelMonitor < <SP :: Target as SignerProvider >:: EcdsaSigner > ) > , io:: Error > {
475469 let monitor_list = self . kv_store . list (
476470 CHANNEL_MONITOR_PERSISTENCE_PRIMARY_NAMESPACE ,
477471 CHANNEL_MONITOR_PERSISTENCE_SECONDARY_NAMESPACE ,
478472 ) ?;
479473 let mut res = Vec :: with_capacity ( monitor_list. len ( ) ) ;
480474 for monitor_key in monitor_list {
481- res. push ( self . read_channel_monitor_with_updates (
482- broadcaster,
483- fee_estimator,
484- monitor_key,
485- ) ?)
475+ res. push ( self . read_channel_monitor_with_updates ( monitor_key) ?)
486476 }
487477 Ok ( res)
488478 }
@@ -504,13 +494,9 @@ where
504494 ///
505495 /// Loading a large number of monitors will be faster if done in parallel. You can use this
506496 /// function to accomplish this. Take care to limit the number of parallel readers.
507- pub fn read_channel_monitor_with_updates < B : Deref , F : Deref > (
508- & self , broadcaster : & B , fee_estimator : & F , monitor_key : String ,
509- ) -> Result < ( BlockHash , ChannelMonitor < <SP :: Target as SignerProvider >:: EcdsaSigner > ) , io:: Error >
510- where
511- B :: Target : BroadcasterInterface ,
512- F :: Target : FeeEstimator ,
513- {
497+ pub fn read_channel_monitor_with_updates (
498+ & self , monitor_key : String ,
499+ ) -> Result < ( BlockHash , ChannelMonitor < <SP :: Target as SignerProvider >:: EcdsaSigner > ) , io:: Error > {
514500 let monitor_name = MonitorName :: new ( monitor_key) ?;
515501 let ( block_hash, monitor) = self . read_monitor ( & monitor_name) ?;
516502 let mut current_update_id = monitor. get_latest_update_id ( ) ;
@@ -529,7 +515,7 @@ where
529515 Err ( err) => return Err ( err) ,
530516 } ;
531517
532- monitor. update_monitor ( & update, broadcaster, fee_estimator, & self . logger )
518+ monitor. update_monitor ( & update, & self . broadcaster , & self . fee_estimator , & self . logger )
533519 . map_err ( |e| {
534520 log_error ! (
535521 self . logger,
@@ -776,50 +762,12 @@ where
776762
777763 fn archive_persisted_channel ( & self , funding_txo : OutPoint ) {
778764 let monitor_name = MonitorName :: from ( funding_txo) ;
779- let monitor = match self . read_monitor ( & monitor_name) {
765+ let monitor_key = monitor_name. as_str ( ) . to_string ( ) ;
766+ let monitor = match self . read_channel_monitor_with_updates ( monitor_key) {
780767 Ok ( ( _block_hash, monitor) ) => monitor,
781768 Err ( _) => return
782769 } ;
783770
784- let mut current_update_id = monitor. get_latest_update_id ( ) ;
785- loop {
786- current_update_id = match current_update_id. checked_add ( 1 ) {
787- Some ( next_update_id) => next_update_id,
788- None => break ,
789- } ;
790- let update_name = UpdateName :: from ( current_update_id) ;
791- let update = match self . read_monitor_update ( & monitor_name, & update_name) {
792- Ok ( update) => update,
793- Err ( err) if err. kind ( ) == io:: ErrorKind :: NotFound => {
794- // We can't find any more updates, so we are done.
795- break ;
796- }
797- Err ( err) => {
798- log_error ! (
799- self . logger,
800- "Monitor update read failed. monitor: {} update: {} reason: {:?}" ,
801- monitor_name. as_str( ) ,
802- update_name. as_str( ) ,
803- err
804- ) ;
805- panic ! ( )
806- } ,
807- } ;
808-
809- monitor. update_monitor ( & update, & self . broadcaster , & self . fee_estimator , & self . logger )
810- . map_err ( |e| {
811- log_error ! (
812- self . logger,
813- "Monitor update failed. monitor: {} update: {} reason: {:?}" ,
814- monitor_name. as_str( ) ,
815- update_name. as_str( ) ,
816- e
817- ) ;
818- io:: Error :: new ( io:: ErrorKind :: Other , "Monitor update failed" )
819- } )
820- . expect ( "Could not apply monitor update during archiving" ) ;
821- }
822-
823771 match self . kv_store . write (
824772 ARCHIVED_CHANNEL_MONITOR_PERSISTENCE_PRIMARY_NAMESPACE ,
825773 ARCHIVED_CHANNEL_MONITOR_PERSISTENCE_SECONDARY_NAMESPACE ,
@@ -1047,23 +995,18 @@ mod tests {
1047995 node_cfgs[ 1 ] . chain_monitor = chain_mon_1;
1048996 let node_chanmgrs = create_node_chanmgrs ( 2 , & node_cfgs, & [ None , None ] ) ;
1049997 let nodes = create_network ( 2 , & node_cfgs, & node_chanmgrs) ;
1050- let broadcaster_0 = & chanmon_cfgs[ 2 ] . tx_broadcaster ;
1051- let broadcaster_1 = & chanmon_cfgs[ 3 ] . tx_broadcaster ;
1052998
1053999 // Check that the persisted channel data is empty before any channels are
10541000 // open.
1055- let mut persisted_chan_data_0 = persister_0. read_all_channel_monitors_with_updates (
1056- & broadcaster_0, & & chanmon_cfgs[ 0 ] . fee_estimator ) . unwrap ( ) ;
1001+ let mut persisted_chan_data_0 = persister_0. read_all_channel_monitors_with_updates ( ) . unwrap ( ) ;
10571002 assert_eq ! ( persisted_chan_data_0. len( ) , 0 ) ;
1058- let mut persisted_chan_data_1 = persister_1. read_all_channel_monitors_with_updates (
1059- & broadcaster_1, & & chanmon_cfgs[ 1 ] . fee_estimator ) . unwrap ( ) ;
1003+ let mut persisted_chan_data_1 = persister_1. read_all_channel_monitors_with_updates ( ) . unwrap ( ) ;
10601004 assert_eq ! ( persisted_chan_data_1. len( ) , 0 ) ;
10611005
10621006 // Helper to make sure the channel is on the expected update ID.
10631007 macro_rules! check_persisted_data {
10641008 ( $expected_update_id: expr) => {
1065- persisted_chan_data_0 = persister_0. read_all_channel_monitors_with_updates(
1066- & broadcaster_0, &&chanmon_cfgs[ 0 ] . fee_estimator) . unwrap( ) ;
1009+ persisted_chan_data_0 = persister_0. read_all_channel_monitors_with_updates( ) . unwrap( ) ;
10671010 // check that we stored only one monitor
10681011 assert_eq!( persisted_chan_data_0. len( ) , 1 ) ;
10691012 for ( _, mon) in persisted_chan_data_0. iter( ) {
@@ -1082,8 +1025,7 @@ mod tests {
10821025 ) ;
10831026 }
10841027 }
1085- persisted_chan_data_1 = persister_1. read_all_channel_monitors_with_updates(
1086- & broadcaster_1, &&chanmon_cfgs[ 1 ] . fee_estimator) . unwrap( ) ;
1028+ persisted_chan_data_1 = persister_1. read_all_channel_monitors_with_updates( ) . unwrap( ) ;
10871029 assert_eq!( persisted_chan_data_1. len( ) , 1 ) ;
10881030 for ( _, mon) in persisted_chan_data_1. iter( ) {
10891031 assert_eq!( mon. get_latest_update_id( ) , $expected_update_id) ;
@@ -1151,7 +1093,7 @@ mod tests {
11511093 check_persisted_data ! ( CLOSED_CHANNEL_UPDATE_ID ) ;
11521094
11531095 // Make sure the expected number of stale updates is present.
1154- let persisted_chan_data = persister_0. read_all_channel_monitors_with_updates ( & broadcaster_0 , & & chanmon_cfgs [ 0 ] . fee_estimator ) . unwrap ( ) ;
1096+ let persisted_chan_data = persister_0. read_all_channel_monitors_with_updates ( ) . unwrap ( ) ;
11551097 let ( _, monitor) = & persisted_chan_data[ 0 ] ;
11561098 let monitor_name = MonitorName :: from ( monitor. get_funding_txo ( ) . 0 ) ;
11571099 // The channel should have 0 updates, as it wrote a full monitor and consolidated.
@@ -1260,11 +1202,9 @@ mod tests {
12601202 let node_chanmgrs = create_node_chanmgrs ( 2 , & node_cfgs, & [ None , None ] ) ;
12611203 let nodes = create_network ( 2 , & node_cfgs, & node_chanmgrs) ;
12621204
1263- let broadcaster_0 = & chanmon_cfgs[ 2 ] . tx_broadcaster ;
1264-
12651205 // Check that the persisted channel data is empty before any channels are
12661206 // open.
1267- let persisted_chan_data = persister_0. read_all_channel_monitors_with_updates ( & broadcaster_0 , & & chanmon_cfgs [ 0 ] . fee_estimator ) . unwrap ( ) ;
1207+ let persisted_chan_data = persister_0. read_all_channel_monitors_with_updates ( ) . unwrap ( ) ;
12681208 assert_eq ! ( persisted_chan_data. len( ) , 0 ) ;
12691209
12701210 // Create some initial channel
@@ -1275,7 +1215,7 @@ mod tests {
12751215 send_payment ( & nodes[ 1 ] , & vec ! [ & nodes[ 0 ] ] [ ..] , 4_000_000 ) ;
12761216
12771217 // Get the monitor and make a fake stale update at update_id=1 (lowest height of an update possible)
1278- let persisted_chan_data = persister_0. read_all_channel_monitors_with_updates ( & broadcaster_0 , & & chanmon_cfgs [ 0 ] . fee_estimator ) . unwrap ( ) ;
1218+ let persisted_chan_data = persister_0. read_all_channel_monitors_with_updates ( ) . unwrap ( ) ;
12791219 let ( _, monitor) = & persisted_chan_data[ 0 ] ;
12801220 let monitor_name = MonitorName :: from ( monitor. get_funding_txo ( ) . 0 ) ;
12811221 persister_0
0 commit comments