@@ -49,6 +49,8 @@ const FRESHNESS_TIMER: u64 = 60;
49
49
#[ cfg( test) ]
50
50
const FRESHNESS_TIMER : u64 = 1 ;
51
51
52
+ const PING_TIMER : u64 = 5 ;
53
+
52
54
/// Trait which handles persisting a [`ChannelManager`] to disk.
53
55
///
54
56
/// [`ChannelManager`]: lightning::ln::channelmanager::ChannelManager
@@ -137,7 +139,8 @@ impl BackgroundProcessor {
137
139
let stop_thread = Arc :: new ( AtomicBool :: new ( false ) ) ;
138
140
let stop_thread_clone = stop_thread. clone ( ) ;
139
141
let handle = thread:: spawn ( move || -> Result < ( ) , std:: io:: Error > {
140
- let mut current_time = Instant :: now ( ) ;
142
+ let mut last_freshness_call = Instant :: now ( ) ;
143
+ let mut last_ping_call = Instant :: now ( ) ;
141
144
loop {
142
145
peer_manager. process_events ( ) ;
143
146
channel_manager. process_pending_events ( & event_handler) ;
@@ -152,11 +155,15 @@ impl BackgroundProcessor {
152
155
log_trace ! ( logger, "Terminating background processor." ) ;
153
156
return Ok ( ( ) ) ;
154
157
}
155
- if current_time . elapsed ( ) . as_secs ( ) > FRESHNESS_TIMER {
156
- log_trace ! ( logger, "Calling ChannelManager's and PeerManager's timer_tick_occurred" ) ;
158
+ if last_freshness_call . elapsed ( ) . as_secs ( ) > FRESHNESS_TIMER {
159
+ log_trace ! ( logger, "Calling ChannelManager's timer_tick_occurred" ) ;
157
160
channel_manager. timer_tick_occurred ( ) ;
161
+ last_freshness_call = Instant :: now ( ) ;
162
+ }
163
+ if last_ping_call. elapsed ( ) . as_secs ( ) > PING_TIMER {
164
+ log_trace ! ( logger, "Calling PeerManager's timer_tick_occurred" ) ;
158
165
peer_manager. timer_tick_occurred ( ) ;
159
- current_time = Instant :: now ( ) ;
166
+ last_ping_call = Instant :: now ( ) ;
160
167
}
161
168
}
162
169
} ) ;
@@ -440,8 +447,10 @@ mod tests {
440
447
let bg_processor = BackgroundProcessor :: start ( persister, event_handler, nodes[ 0 ] . chain_monitor . clone ( ) , nodes[ 0 ] . node . clone ( ) , nodes[ 0 ] . peer_manager . clone ( ) , nodes[ 0 ] . logger . clone ( ) ) ;
441
448
loop {
442
449
let log_entries = nodes[ 0 ] . logger . lines . lock ( ) . unwrap ( ) ;
443
- let desired_log = "Calling ChannelManager's and PeerManager's timer_tick_occurred" . to_string ( ) ;
444
- if log_entries. get ( & ( "lightning_background_processor" . to_string ( ) , desired_log) ) . is_some ( ) {
450
+ let desired_log = "Calling ChannelManager's timer_tick_occurred" . to_string ( ) ;
451
+ let second_desired_log = "Calling PeerManager's timer_tick_occurred" . to_string ( ) ;
452
+ if log_entries. get ( & ( "lightning_background_processor" . to_string ( ) , desired_log) ) . is_some ( ) &&
453
+ log_entries. get ( & ( "lightning_background_processor" . to_string ( ) , second_desired_log) ) . is_some ( ) {
445
454
break
446
455
}
447
456
}
0 commit comments