@@ -306,6 +306,19 @@ impl BitcoindChainSource {
306
306
} ) ?;
307
307
}
308
308
309
+ let res = self
310
+ . poll_and_update_listeners_inner ( channel_manager, chain_monitor, output_sweeper)
311
+ . await ;
312
+
313
+ self . wallet_polling_status . lock ( ) . unwrap ( ) . propagate_result_to_subscribers ( res) ;
314
+
315
+ res
316
+ }
317
+
318
+ async fn poll_and_update_listeners_inner (
319
+ & self , channel_manager : Arc < ChannelManager > , chain_monitor : Arc < ChainMonitor > ,
320
+ output_sweeper : Arc < Sweeper > ,
321
+ ) -> Result < ( ) , Error > {
309
322
let latest_chain_tip_opt = self . latest_chain_tip . read ( ) . unwrap ( ) . clone ( ) ;
310
323
let chain_tip = if let Some ( tip) = latest_chain_tip_opt {
311
324
tip
@@ -317,9 +330,7 @@ impl BitcoindChainSource {
317
330
} ,
318
331
Err ( e) => {
319
332
log_error ! ( self . logger, "Failed to poll for chain data: {:?}" , e) ;
320
- let res = Err ( Error :: TxSyncFailed ) ;
321
- self . wallet_polling_status . lock ( ) . unwrap ( ) . propagate_result_to_subscribers ( res) ;
322
- return res;
333
+ return Err ( Error :: TxSyncFailed ) ;
323
334
} ,
324
335
}
325
336
} ;
@@ -348,9 +359,7 @@ impl BitcoindChainSource {
348
359
Ok ( _) => { } ,
349
360
Err ( e) => {
350
361
log_error ! ( self . logger, "Failed to poll for chain data: {:?}" , e) ;
351
- let res = Err ( Error :: TxSyncFailed ) ;
352
- self . wallet_polling_status . lock ( ) . unwrap ( ) . propagate_result_to_subscribers ( res) ;
353
- return res;
362
+ return Err ( Error :: TxSyncFailed ) ;
354
363
} ,
355
364
}
356
365
@@ -376,9 +385,7 @@ impl BitcoindChainSource {
376
385
} ,
377
386
Err ( e) => {
378
387
log_error ! ( self . logger, "Failed to poll for mempool transactions: {:?}" , e) ;
379
- let res = Err ( Error :: TxSyncFailed ) ;
380
- self . wallet_polling_status . lock ( ) . unwrap ( ) . propagate_result_to_subscribers ( res) ;
381
- return res;
388
+ return Err ( Error :: TxSyncFailed ) ;
382
389
} ,
383
390
}
384
391
@@ -388,24 +395,13 @@ impl BitcoindChainSource {
388
395
locked_node_metrics. latest_lightning_wallet_sync_timestamp = unix_time_secs_opt;
389
396
locked_node_metrics. latest_onchain_wallet_sync_timestamp = unix_time_secs_opt;
390
397
391
- let write_res = write_node_metrics (
398
+ write_node_metrics (
392
399
& * locked_node_metrics,
393
400
Arc :: clone ( & self . kv_store ) ,
394
401
Arc :: clone ( & self . logger ) ,
395
- ) ;
396
- match write_res {
397
- Ok ( ( ) ) => ( ) ,
398
- Err ( e) => {
399
- log_error ! ( self . logger, "Failed to persist node metrics: {}" , e) ;
400
- let res = Err ( Error :: PersistenceFailed ) ;
401
- self . wallet_polling_status . lock ( ) . unwrap ( ) . propagate_result_to_subscribers ( res) ;
402
- return res;
403
- } ,
404
- }
402
+ ) ?;
405
403
406
- let res = Ok ( ( ) ) ;
407
- self . wallet_polling_status . lock ( ) . unwrap ( ) . propagate_result_to_subscribers ( res) ;
408
- res
404
+ Ok ( ( ) )
409
405
}
410
406
411
407
pub ( super ) async fn update_fee_rate_estimates ( & self ) -> Result < ( ) , Error > {
0 commit comments