@@ -207,57 +207,81 @@ impl ChainSource {
207207 ) {
208208 match self {
209209 Self :: Esplora { sync_config, logger, .. } => {
210- // Setup syncing intervals
211- let onchain_wallet_sync_interval_secs = sync_config
212- . onchain_wallet_sync_interval_secs
213- . max ( WALLET_SYNC_INTERVAL_MINIMUM_SECS ) ;
214- let mut onchain_wallet_sync_interval =
215- tokio:: time:: interval ( Duration :: from_secs ( onchain_wallet_sync_interval_secs) ) ;
216- onchain_wallet_sync_interval
217- . set_missed_tick_behavior ( tokio:: time:: MissedTickBehavior :: Skip ) ;
210+ // Setup background syncing intervals if enabled
211+ if let Some ( background_sync_config) = sync_config. background_sync_config {
212+ let onchain_interval_secs = background_sync_config
213+ . onchain_wallet_sync_interval_secs
214+ . max ( WALLET_SYNC_INTERVAL_MINIMUM_SECS ) ;
215+ let mut onchain_interval =
216+ tokio:: time:: interval ( Duration :: from_secs ( onchain_interval_secs) ) ;
217+ onchain_interval
218+ . set_missed_tick_behavior ( tokio:: time:: MissedTickBehavior :: Skip ) ;
219+ log_info ! (
220+ logger,
221+ "Onchain wallet background syncing enabled with interval of {} seconds" ,
222+ onchain_interval_secs
223+ ) ;
218224
219- let fee_rate_cache_update_interval_secs = sync_config
220- . fee_rate_cache_update_interval_secs
221- . max ( WALLET_SYNC_INTERVAL_MINIMUM_SECS ) ;
222- let mut fee_rate_update_interval =
223- tokio:: time:: interval ( Duration :: from_secs ( fee_rate_cache_update_interval_secs) ) ;
224- // When starting up, we just blocked on updating, so skip the first tick.
225- fee_rate_update_interval. reset ( ) ;
226- fee_rate_update_interval
227- . set_missed_tick_behavior ( tokio:: time:: MissedTickBehavior :: Skip ) ;
225+ let lightning_interval_secs = background_sync_config
226+ . lightning_wallet_sync_interval_secs
227+ . max ( WALLET_SYNC_INTERVAL_MINIMUM_SECS ) ;
228+ let mut lightning_interval =
229+ tokio:: time:: interval ( Duration :: from_secs ( lightning_interval_secs) ) ;
230+ lightning_interval
231+ . set_missed_tick_behavior ( tokio:: time:: MissedTickBehavior :: Skip ) ;
232+ log_info ! (
233+ logger,
234+ "Lightning wallet background syncing enabled with interval of {} seconds" ,
235+ lightning_interval_secs
236+ ) ;
228237
229- let lightning_wallet_sync_interval_secs = sync_config
230- . lightning_wallet_sync_interval_secs
231- . max ( WALLET_SYNC_INTERVAL_MINIMUM_SECS ) ;
232- let mut lightning_wallet_sync_interval =
233- tokio:: time:: interval ( Duration :: from_secs ( lightning_wallet_sync_interval_secs) ) ;
234- lightning_wallet_sync_interval
235- . set_missed_tick_behavior ( tokio:: time:: MissedTickBehavior :: Skip ) ;
238+ let fee_rate_interval_secs = background_sync_config
239+ . fee_rate_cache_update_interval_secs
240+ . max ( WALLET_SYNC_INTERVAL_MINIMUM_SECS ) ;
241+ let mut fee_rate_interval =
242+ tokio:: time:: interval ( Duration :: from_secs ( fee_rate_interval_secs) ) ;
243+ // When starting up, we just blocked on updating, so skip the first tick.
244+ fee_rate_interval. reset ( ) ;
245+ fee_rate_interval
246+ . set_missed_tick_behavior ( tokio:: time:: MissedTickBehavior :: Skip ) ;
247+ log_info ! (
248+ logger,
249+ "Fee rate background syncing enabled with interval of {} seconds" ,
250+ fee_rate_interval_secs
251+ ) ;
236252
237- // Start the syncing loop.
238- loop {
239- tokio :: select! {
240- _ = stop_sync_receiver . changed ( ) => {
241- log_trace! (
242- logger ,
243- "Stopping background syncing on-chain wallet." ,
244- ) ;
245- return ;
246- }
247- _ = onchain_wallet_sync_interval . tick ( ) => {
248- let _ = self . sync_onchain_wallet ( ) . await ;
249- }
250- _ = fee_rate_update_interval . tick ( ) => {
251- let _ = self . update_fee_rate_estimates ( ) . await ;
252- }
253- _ = lightning_wallet_sync_interval . tick ( ) => {
254- let _ = self . sync_lightning_wallet (
255- Arc :: clone( & channel_manager ) ,
256- Arc :: clone( & chain_monitor ) ,
257- Arc :: clone ( & output_sweeper ) ,
258- ) . await ;
253+ loop {
254+ tokio :: select! {
255+ _ = stop_sync_receiver . changed ( ) => {
256+ log_trace! ( logger , "Stopping Esplora background syncing." ) ;
257+ return ;
258+ }
259+
260+ _ = onchain_interval . tick ( ) => {
261+ let _ = self . sync_onchain_wallet ( ) . await ;
262+ }
263+
264+ _ = fee_rate_interval . tick ( ) => {
265+ let _ = self . update_fee_rate_estimates ( ) . await ;
266+ }
267+
268+ _ = lightning_interval . tick ( ) => {
269+ let _ = self . sync_lightning_wallet (
270+ Arc :: clone ( & channel_manager ) ,
271+ Arc :: clone( & chain_monitor ) ,
272+ Arc :: clone( & output_sweeper ) ,
273+ ) . await ;
274+ }
259275 }
260276 }
277+ } else {
278+ // Background syncing is disabled
279+ log_info ! (
280+ logger,
281+ "Background syncing disabled. Manual syncing required for onchain wallet, lightning wallet, and fee rate updates." ,
282+ ) ;
283+
284+ return ;
261285 }
262286 } ,
263287 Self :: BitcoindRpc {
0 commit comments