mirror of
https://github.com/sigp/lighthouse.git
synced 2026-04-22 23:38:24 +00:00
Ensure a prompt exit
This commit is contained in:
@@ -129,45 +129,43 @@ impl<T: SlotClock + Clone + 'static, E: EthSpec> AttestationService<T, E> {
|
|||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
info!(
|
|
||||||
log,
|
|
||||||
"Waiting for next slot";
|
|
||||||
"seconds_to_wait" => duration_to_next_slot.as_secs()
|
|
||||||
);
|
|
||||||
|
|
||||||
let (exit_signal, exit_fut) = exit_future::signal();
|
let (exit_signal, exit_fut) = exit_future::signal();
|
||||||
let service = self.clone();
|
let service = self.clone();
|
||||||
let log_1 = log.clone();
|
let log_1 = log.clone();
|
||||||
let log_2 = log.clone();
|
let log_2 = log.clone();
|
||||||
|
let log_3 = log.clone();
|
||||||
|
|
||||||
context.executor.spawn(
|
context.executor.spawn(
|
||||||
interval
|
exit_fut
|
||||||
.map_err(move |e| {
|
.until(
|
||||||
error! {
|
interval
|
||||||
log_1,
|
.map_err(move |e| {
|
||||||
"Timer thread failed";
|
error! {
|
||||||
"error" => format!("{}", e)
|
log_1,
|
||||||
}
|
"Timer thread failed";
|
||||||
})
|
"error" => format!("{}", e)
|
||||||
.and_then(move |_| if exit_fut.is_live() { Ok(()) } else { Err(()) })
|
}
|
||||||
.for_each(move |_| {
|
})
|
||||||
if let Err(e) = service.clone().spawn_attestation_tasks() {
|
.for_each(move |_| {
|
||||||
error!(
|
if let Err(e) = service.clone().spawn_attestation_tasks() {
|
||||||
log_2,
|
error!(
|
||||||
"Failed to spawn attestation tasks";
|
log_2,
|
||||||
"error" => e
|
"Failed to spawn attestation tasks";
|
||||||
)
|
"error" => e
|
||||||
} else {
|
)
|
||||||
trace!(
|
} else {
|
||||||
log_2,
|
trace!(
|
||||||
"Spawned attestation tasks";
|
log_2,
|
||||||
)
|
"Spawned attestation tasks";
|
||||||
}
|
)
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
})
|
})
|
||||||
// Prevent any errors from escaping and stopping the interval.
|
// Prevent any errors from escaping and stopping the interval.
|
||||||
.then(|_| Ok(())),
|
.then(|_| Ok(())),
|
||||||
|
)
|
||||||
|
.map(move |_| info!(log_3, "Shutdown complete")),
|
||||||
);
|
);
|
||||||
|
|
||||||
Ok(exit_signal)
|
Ok(exit_signal)
|
||||||
|
|||||||
@@ -120,28 +120,27 @@ impl<T: SlotClock + Clone + 'static, E: EthSpec> BlockService<T, E> {
|
|||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
info!(
|
|
||||||
log,
|
|
||||||
"Waiting for next slot";
|
|
||||||
"seconds_to_wait" => duration_to_next_slot.as_secs()
|
|
||||||
);
|
|
||||||
|
|
||||||
let (exit_signal, exit_fut) = exit_future::signal();
|
let (exit_signal, exit_fut) = exit_future::signal();
|
||||||
let service = self.clone();
|
let service = self.clone();
|
||||||
|
let log_1 = log.clone();
|
||||||
|
let log_2 = log.clone();
|
||||||
|
|
||||||
self.context.executor.spawn(
|
self.context.executor.spawn(
|
||||||
interval
|
exit_fut
|
||||||
.map_err(move |e| {
|
.until(
|
||||||
error! {
|
interval
|
||||||
log,
|
.map_err(move |e| {
|
||||||
"Timer thread failed";
|
error! {
|
||||||
"error" => format!("{}", e)
|
log_1,
|
||||||
}
|
"Timer thread failed";
|
||||||
})
|
"error" => format!("{}", e)
|
||||||
.and_then(move |_| if exit_fut.is_live() { Ok(()) } else { Err(()) })
|
}
|
||||||
.for_each(move |_| service.clone().do_update())
|
})
|
||||||
// Prevent any errors from escaping and stopping the interval.
|
.for_each(move |_| service.clone().do_update())
|
||||||
.then(|_| Ok(())),
|
// Prevent any errors from escaping and stopping the interval.
|
||||||
|
.then(|_| Ok(())),
|
||||||
|
)
|
||||||
|
.map(move |_| info!(log_2, "Shutdown complete")),
|
||||||
);
|
);
|
||||||
|
|
||||||
Ok(exit_signal)
|
Ok(exit_signal)
|
||||||
|
|||||||
@@ -220,31 +220,30 @@ impl<T: SlotClock + Clone + 'static, E: EthSpec> DutiesService<T, E> {
|
|||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
info!(
|
|
||||||
log,
|
|
||||||
"Waiting for next slot";
|
|
||||||
"seconds_to_wait" => duration_to_next_slot.as_secs()
|
|
||||||
);
|
|
||||||
|
|
||||||
let (exit_signal, exit_fut) = exit_future::signal();
|
let (exit_signal, exit_fut) = exit_future::signal();
|
||||||
let service = self.clone();
|
let service = self.clone();
|
||||||
|
let log_1 = log.clone();
|
||||||
|
let log_2 = log.clone();
|
||||||
|
|
||||||
// Run an immediate update before starting the updater service.
|
// Run an immediate update before starting the updater service.
|
||||||
self.context.executor.spawn(service.clone().do_update());
|
self.context.executor.spawn(service.clone().do_update());
|
||||||
|
|
||||||
self.context.executor.spawn(
|
self.context.executor.spawn(
|
||||||
interval
|
exit_fut
|
||||||
.map_err(move |e| {
|
.until(
|
||||||
error! {
|
interval
|
||||||
log,
|
.map_err(move |e| {
|
||||||
"Timer thread failed";
|
error! {
|
||||||
"error" => format!("{}", e)
|
log_1,
|
||||||
}
|
"Timer thread failed";
|
||||||
})
|
"error" => format!("{}", e)
|
||||||
.and_then(move |_| if exit_fut.is_live() { Ok(()) } else { Err(()) })
|
}
|
||||||
.for_each(move |_| service.clone().do_update())
|
})
|
||||||
// Prevent any errors from escaping and stopping the interval.
|
.for_each(move |_| service.clone().do_update())
|
||||||
.then(|_| Ok(())),
|
// Prevent any errors from escaping and stopping the interval.
|
||||||
|
.then(|_| Ok(())),
|
||||||
|
)
|
||||||
|
.map(move |_| info!(log_2, "Shutdown complete")),
|
||||||
);
|
);
|
||||||
|
|
||||||
Ok(exit_signal)
|
Ok(exit_signal)
|
||||||
|
|||||||
@@ -100,14 +100,10 @@ impl<T: SlotClock + Clone + 'static, E: EthSpec> ForkService<T, E> {
|
|||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
info!(
|
|
||||||
log,
|
|
||||||
"Waiting for next slot";
|
|
||||||
"seconds_to_wait" => duration_to_next_epoch.as_secs()
|
|
||||||
);
|
|
||||||
|
|
||||||
let (exit_signal, exit_fut) = exit_future::signal();
|
let (exit_signal, exit_fut) = exit_future::signal();
|
||||||
let service = self.clone();
|
let service = self.clone();
|
||||||
|
let log_1 = log.clone();
|
||||||
|
let log_2 = log.clone();
|
||||||
|
|
||||||
// Run an immediate update before starting the updater service.
|
// Run an immediate update before starting the updater service.
|
||||||
self.inner
|
self.inner
|
||||||
@@ -116,18 +112,21 @@ impl<T: SlotClock + Clone + 'static, E: EthSpec> ForkService<T, E> {
|
|||||||
.spawn(service.clone().do_update());
|
.spawn(service.clone().do_update());
|
||||||
|
|
||||||
self.inner.context.executor.spawn(
|
self.inner.context.executor.spawn(
|
||||||
interval
|
exit_fut
|
||||||
.map_err(move |e| {
|
.until(
|
||||||
error! {
|
interval
|
||||||
log,
|
.map_err(move |e| {
|
||||||
"Timer thread failed";
|
error! {
|
||||||
"error" => format!("{}", e)
|
log_1,
|
||||||
}
|
"Timer thread failed";
|
||||||
})
|
"error" => format!("{}", e)
|
||||||
.and_then(move |_| if exit_fut.is_live() { Ok(()) } else { Err(()) })
|
}
|
||||||
.for_each(move |_| service.clone().do_update())
|
})
|
||||||
// Prevent any errors from escaping and stopping the interval.
|
.for_each(move |_| service.clone().do_update())
|
||||||
.then(|_| Ok(())),
|
// Prevent any errors from escaping and stopping the interval.
|
||||||
|
.then(|_| Ok(())),
|
||||||
|
)
|
||||||
|
.map(move |_| info!(log_2, "Shutdown complete")),
|
||||||
);
|
);
|
||||||
|
|
||||||
Ok(exit_signal)
|
Ok(exit_signal)
|
||||||
|
|||||||
Reference in New Issue
Block a user