Skip to content

Commit 55426d7

Browse files
committed
re-enable sync bg proc
1 parent f357700 commit 55426d7

File tree

1 file changed

+75
-66
lines changed
  • lightning-background-processor/src

1 file changed

+75
-66
lines changed

lightning-background-processor/src/lib.rs

Lines changed: 75 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,15 @@ fn update_scorer<'a, S: 'static + Deref<Target = SC> + Send + Sync, SC: 'a + Wri
313313
true
314314
}
315315

316+
macro_rules! maybe_await {
317+
(true, $e:expr) => {
318+
$e.await
319+
};
320+
(false, $e:expr) => {
321+
$e
322+
};
323+
}
324+
316325
macro_rules! define_run_body {
317326
(
318327
$persister: ident, $chain_monitor: ident, $process_chain_monitor_events: expr,
@@ -321,7 +330,7 @@ macro_rules! define_run_body {
321330
$peer_manager: ident, $gossip_sync: ident,
322331
$process_sweeper: expr,
323332
$logger: ident, $scorer: ident, $loop_exit_check: expr, $await: expr, $get_timer: expr,
324-
$timer_elapsed: expr, $check_slow_await: expr, $time_fetch: expr,
333+
$timer_elapsed: expr, $check_slow_await: expr, $time_fetch: expr, $async: tt,
325334
) => { {
326335
log_trace!($logger, "Calling ChannelManager's timer_tick_occurred on startup");
327336
$channel_manager.get_cm().timer_tick_occurred();
@@ -377,7 +386,7 @@ macro_rules! define_run_body {
377386

378387
if $channel_manager.get_cm().get_and_clear_needs_persistence() {
379388
log_trace!($logger, "Persisting ChannelManager...");
380-
$persister.persist_manager(&$channel_manager).await?;
389+
maybe_await!($async, $persister.persist_manager(&$channel_manager))?;
381390
log_trace!($logger, "Done persisting ChannelManager.");
382391
}
383392
if $timer_elapsed(&mut last_freshness_call, FRESHNESS_TIMER) {
@@ -438,7 +447,7 @@ macro_rules! define_run_body {
438447
log_trace!($logger, "Persisting network graph.");
439448
}
440449

441-
if let Err(e) = $persister.persist_graph(network_graph).await {
450+
if let Err(e) = maybe_await!($async, $persister.persist_graph(network_graph)) {
442451
log_error!($logger, "Error: Failed to persist network graph, check your disk and permissions {}", e)
443452
}
444453

@@ -466,7 +475,7 @@ macro_rules! define_run_body {
466475
} else {
467476
log_trace!($logger, "Persisting scorer");
468477
}
469-
if let Err(e) = $persister.persist_scorer(&scorer).await {
478+
if let Err(e) = maybe_await!($async, $persister.persist_scorer(&scorer)) {
470479
log_error!($logger, "Error: Failed to persist scorer, check your disk and permissions {}", e)
471480
}
472481
}
@@ -489,16 +498,16 @@ macro_rules! define_run_body {
489498
// After we exit, ensure we persist the ChannelManager one final time - this avoids
490499
// some races where users quit while channel updates were in-flight, with
491500
// ChannelMonitor update(s) persisted without a corresponding ChannelManager update.
492-
$persister.persist_manager(&$channel_manager).await?;
501+
maybe_await!($async, $persister.persist_manager(&$channel_manager))?;
493502

494503
// Persist Scorer on exit
495504
if let Some(ref scorer) = $scorer {
496-
$persister.persist_scorer(&scorer).await?;
505+
maybe_await!($async, $persister.persist_scorer(&scorer))?;
497506
}
498507

499508
// Persist NetworkGraph on exit
500509
if let Some(network_graph) = $gossip_sync.network_graph() {
501-
$persister.persist_graph(network_graph).await?;
510+
maybe_await!($async, $persister.persist_graph(network_graph))?;
502511
}
503512

504513
Ok(())
@@ -920,6 +929,7 @@ where
920929
},
921930
mobile_interruptable_platform,
922931
fetch_time,
932+
true,
923933
)
924934
}
925935

@@ -1042,65 +1052,64 @@ impl BackgroundProcessor {
10421052
}
10431053
event_handler.handle_event(event)
10441054
};
1045-
// define_run_body!(
1046-
// persister,
1047-
// chain_monitor,
1048-
// chain_monitor.process_pending_events(&event_handler),
1049-
// channel_manager,
1050-
// channel_manager.get_cm().process_pending_events(&event_handler),
1051-
// onion_messenger,
1052-
// if let Some(om) = &onion_messenger {
1053-
// om.get_om().process_pending_events(&event_handler)
1054-
// },
1055-
// peer_manager,
1056-
// gossip_sync,
1057-
// {
1058-
// if let Some(ref sweeper) = sweeper {
1059-
// let _ = sweeper.regenerate_and_broadcast_spend_if_necessary();
1060-
// }
1061-
// },
1062-
// logger,
1063-
// scorer,
1064-
// stop_thread.load(Ordering::Acquire),
1065-
// {
1066-
// let sleeper = match (onion_messenger.as_ref(), liquidity_manager.as_ref()) {
1067-
// (Some(om), Some(lm)) => Sleeper::from_four_futures(
1068-
// &channel_manager.get_cm().get_event_or_persistence_needed_future(),
1069-
// &chain_monitor.get_update_future(),
1070-
// &om.get_om().get_update_future(),
1071-
// &lm.get_lm().get_pending_msgs_future(),
1072-
// ),
1073-
// (Some(om), None) => Sleeper::from_three_futures(
1074-
// &channel_manager.get_cm().get_event_or_persistence_needed_future(),
1075-
// &chain_monitor.get_update_future(),
1076-
// &om.get_om().get_update_future(),
1077-
// ),
1078-
// (None, Some(lm)) => Sleeper::from_three_futures(
1079-
// &channel_manager.get_cm().get_event_or_persistence_needed_future(),
1080-
// &chain_monitor.get_update_future(),
1081-
// &lm.get_lm().get_pending_msgs_future(),
1082-
// ),
1083-
// (None, None) => Sleeper::from_two_futures(
1084-
// &channel_manager.get_cm().get_event_or_persistence_needed_future(),
1085-
// &chain_monitor.get_update_future(),
1086-
// ),
1087-
// };
1088-
// sleeper.wait_timeout(Duration::from_millis(100));
1089-
// },
1090-
// |_| Instant::now(),
1091-
// |time: &Instant, dur| time.elapsed().as_secs() > dur,
1092-
// false,
1093-
// || {
1094-
// use std::time::SystemTime;
1095-
// Some(
1096-
// SystemTime::now()
1097-
// .duration_since(SystemTime::UNIX_EPOCH)
1098-
// .expect("Time should be sometime after 1970"),
1099-
// )
1100-
// },
1101-
// )
1102-
1103-
Ok(())
1055+
define_run_body!(
1056+
persister,
1057+
chain_monitor,
1058+
chain_monitor.process_pending_events(&event_handler),
1059+
channel_manager,
1060+
channel_manager.get_cm().process_pending_events(&event_handler),
1061+
onion_messenger,
1062+
if let Some(om) = &onion_messenger {
1063+
om.get_om().process_pending_events(&event_handler)
1064+
},
1065+
peer_manager,
1066+
gossip_sync,
1067+
{
1068+
if let Some(ref sweeper) = sweeper {
1069+
let _ = sweeper.regenerate_and_broadcast_spend_if_necessary();
1070+
}
1071+
},
1072+
logger,
1073+
scorer,
1074+
stop_thread.load(Ordering::Acquire),
1075+
{
1076+
let sleeper = match (onion_messenger.as_ref(), liquidity_manager.as_ref()) {
1077+
(Some(om), Some(lm)) => Sleeper::from_four_futures(
1078+
&channel_manager.get_cm().get_event_or_persistence_needed_future(),
1079+
&chain_monitor.get_update_future(),
1080+
&om.get_om().get_update_future(),
1081+
&lm.get_lm().get_pending_msgs_future(),
1082+
),
1083+
(Some(om), None) => Sleeper::from_three_futures(
1084+
&channel_manager.get_cm().get_event_or_persistence_needed_future(),
1085+
&chain_monitor.get_update_future(),
1086+
&om.get_om().get_update_future(),
1087+
),
1088+
(None, Some(lm)) => Sleeper::from_three_futures(
1089+
&channel_manager.get_cm().get_event_or_persistence_needed_future(),
1090+
&chain_monitor.get_update_future(),
1091+
&lm.get_lm().get_pending_msgs_future(),
1092+
),
1093+
(None, None) => Sleeper::from_two_futures(
1094+
&channel_manager.get_cm().get_event_or_persistence_needed_future(),
1095+
&chain_monitor.get_update_future(),
1096+
),
1097+
};
1098+
sleeper.wait_timeout(Duration::from_millis(100));
1099+
},
1100+
|_| Instant::now(),
1101+
|time: &Instant, dur| time.elapsed().as_secs() > dur,
1102+
false,
1103+
|| {
1104+
use std::time::SystemTime;
1105+
Some(
1106+
SystemTime::now()
1107+
.duration_since(SystemTime::UNIX_EPOCH)
1108+
.expect("Time should be sometime after 1970"),
1109+
)
1110+
},
1111+
false,
1112+
)
11041113
});
11051114
Self { stop_thread: stop_thread_clone, thread_handle: Some(handle) }
11061115
}

0 commit comments

Comments
 (0)