agent: do not return error but print it if task wait failed

Do not return error but print it if task wait failed
and let program continue to run the next code.

Fixes: #2892

Signed-off-by: bin <bin@hyper.sh>
This commit is contained in:
bin 2021-10-25 18:19:51 +08:00
parent 01fdeb7641
commit 5f5eca6b8e

View File

@ -229,12 +229,6 @@ async fn real_main() -> std::result::Result<(), Box<dyn std::error::Error>> {
// Wait for all threads to finish
let results = join_all(tasks).await;
for result in results {
if let Err(e) = result {
return Err(anyhow!(e).into());
}
}
// force flushing spans
drop(span_guard);
drop(root_span);
@ -245,7 +239,19 @@ async fn real_main() -> std::result::Result<(), Box<dyn std::error::Error>> {
eprintln!("{} shutdown complete", NAME);
Ok(())
let mut wait_errors: Vec<tokio::task::JoinError> = vec![];
for result in results {
if let Err(e) = result {
eprintln!("wait task error: {:#?}", e);
wait_errors.push(e);
}
}
if wait_errors.is_empty() {
Ok(())
} else {
Err(anyhow!("wait all tasks failed: {:#?}", wait_errors).into())
}
}
fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {