@@ -69,11 +69,12 @@ use crate::logger::{log_error, LdkLogger, LogLevel, LogWriter, Logger};
6969use crate :: message_handler:: NodeCustomMessageHandler ;
7070use crate :: payment:: asynchronous:: om_mailbox:: OnionMessageMailbox ;
7171use crate :: peer_store:: PeerStore ;
72- use crate :: runtime:: Runtime ;
72+ use crate :: runtime:: { Runtime , RuntimeSpawner } ;
7373use crate :: tx_broadcaster:: TransactionBroadcaster ;
7474use crate :: types:: {
75- ChainMonitor , ChannelManager , DynStore , DynStoreWrapper , GossipSync , Graph , KeysManager ,
76- MessageRouter , OnionMessenger , PaymentStore , PeerManager , Persister , SyncAndAsyncKVStore ,
75+ AsyncPersister , ChainMonitor , ChannelManager , DynStore , DynStoreWrapper , GossipSync , Graph ,
76+ KeysManager , MessageRouter , OnionMessenger , PaymentStore , PeerManager , Persister ,
77+ SyncAndAsyncKVStore ,
7778} ;
7879use crate :: wallet:: persist:: KVStoreWalletPersister ;
7980use crate :: wallet:: Wallet ;
@@ -1261,8 +1262,9 @@ fn build_with_store_internal(
12611262 ) ) ;
12621263
12631264 let peer_storage_key = keys_manager. get_peer_storage_key ( ) ;
1264- let persister = Arc :: new ( Persister :: new (
1265+ let monitor_reader = Arc :: new ( AsyncPersister :: new (
12651266 Arc :: clone ( & kv_store) ,
1267+ RuntimeSpawner :: new ( Arc :: clone ( & runtime) ) ,
12661268 Arc :: clone ( & logger) ,
12671269 PERSISTER_MAX_PENDING_UPDATES ,
12681270 Arc :: clone ( & keys_manager) ,
@@ -1272,7 +1274,9 @@ fn build_with_store_internal(
12721274 ) ) ;
12731275
12741276 // Read ChannelMonitor state from store
1275- let channel_monitors = match persister. read_all_channel_monitors_with_updates ( ) {
1277+ let monitor_read_result =
1278+ runtime. block_on ( monitor_reader. read_all_channel_monitors_with_updates_parallel ( ) ) ;
1279+ let channel_monitors = match monitor_read_result {
12761280 Ok ( monitors) => monitors,
12771281 Err ( e) => {
12781282 if e. kind ( ) == lightning:: io:: ErrorKind :: NotFound {
@@ -1284,6 +1288,16 @@ fn build_with_store_internal(
12841288 } ,
12851289 } ;
12861290
1291+ let persister = Arc :: new ( Persister :: new (
1292+ Arc :: clone ( & kv_store) ,
1293+ Arc :: clone ( & logger) ,
1294+ PERSISTER_MAX_PENDING_UPDATES ,
1295+ Arc :: clone ( & keys_manager) ,
1296+ Arc :: clone ( & keys_manager) ,
1297+ Arc :: clone ( & tx_broadcaster) ,
1298+ Arc :: clone ( & fee_estimator) ,
1299+ ) ) ;
1300+
12871301 // Initialize the ChainMonitor
12881302 let chain_monitor: Arc < ChainMonitor > = Arc :: new ( chainmonitor:: ChainMonitor :: new (
12891303 Some ( Arc :: clone ( & chain_source) ) ,
0 commit comments