Background task manager #332
2 changed files with 29 additions and 1 deletions
|
@ -728,6 +728,23 @@ impl Worker for ResyncWorker {
|
|||
"Block resync worker".into()
|
||||
}
|
||||
|
||||
fn info(&self) -> Option<String> {
|
||||
let mut ret = vec![];
|
||||
let qlen = self.manager.resync_queue_len().unwrap_or(0);
|
||||
let elen = self.manager.resync_errors_len().unwrap_or(0);
|
||||
if qlen > 0 {
|
||||
ret.push(format!("{} blocks in queue", qlen));
|
||||
}
|
||||
if elen > 0 {
|
||||
ret.push(format!("{} blocks in error state", elen));
|
||||
}
|
||||
if ret.len() > 0 {
|
||||
Some(ret.join(", "))
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
async fn work(
|
||||
&mut self,
|
||||
_must_exit: &mut watch::Receiver<bool>,
|
||||
|
|
|
@ -326,7 +326,18 @@ where
|
|||
&mut self,
|
||||
_must_exit: &mut watch::Receiver<bool>,
|
||||
) -> Result<WorkerStatus, Error> {
|
||||
self.0.updater_loop_iter()
|
||||
let updater = self.0.clone();
|
||||
tokio::task::spawn_blocking(move || {
|
||||
for _i in 0..100 {
|
||||
let s = updater.updater_loop_iter();
|
||||
if !matches!(s, Ok(WorkerStatus::Busy)) {
|
||||
return s;
|
||||
}
|
||||
}
|
||||
Ok(WorkerStatus::Busy)
|
||||
})
|
||||
.await
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
async fn wait_for_work(&mut self, must_exit: &watch::Receiver<bool>) -> WorkerStatus {
|
||||
|
|
Loading…
Reference in a new issue