mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 02:11:53 +00:00
better logging of health (#2228)
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
use std::sync::atomic::{AtomicBool, Ordering};
|
use std::sync::atomic::{AtomicBool, Ordering};
|
||||||
|
|
||||||
|
use itertools::Itertools;
|
||||||
use patch_db::{DbHandle, LockReceipt, LockType};
|
use patch_db::{DbHandle, LockReceipt, LockType};
|
||||||
use tracing::instrument;
|
use tracing::instrument;
|
||||||
|
|
||||||
@@ -111,6 +112,7 @@ pub async fn check<Db: DbHandle>(
|
|||||||
};
|
};
|
||||||
|
|
||||||
let health_results = if let Some(started) = started {
|
let health_results = if let Some(started) = started {
|
||||||
|
tracing::debug!("Checking health of {}", id);
|
||||||
manifest
|
manifest
|
||||||
.health_checks
|
.health_checks
|
||||||
.check_all(
|
.check_all(
|
||||||
@@ -129,6 +131,24 @@ pub async fn check<Db: DbHandle>(
|
|||||||
if !should_commit.load(Ordering::SeqCst) {
|
if !should_commit.load(Ordering::SeqCst) {
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !health_results
|
||||||
|
.iter()
|
||||||
|
.any(|(_, res)| matches!(res, HealthCheckResult::Failure { .. }))
|
||||||
|
{
|
||||||
|
tracing::debug!("All health checks succeeded for {}", id);
|
||||||
|
} else {
|
||||||
|
tracing::debug!(
|
||||||
|
"Some health checks failed for {}: {}",
|
||||||
|
id,
|
||||||
|
health_results
|
||||||
|
.iter()
|
||||||
|
.filter(|(_, res)| matches!(res, HealthCheckResult::Failure { .. }))
|
||||||
|
.map(|(id, _)| &*id)
|
||||||
|
.join(", ")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
let current_dependents = {
|
let current_dependents = {
|
||||||
let mut checkpoint = tx.begin().await?;
|
let mut checkpoint = tx.begin().await?;
|
||||||
let receipts = HealthCheckStatusReceipt::new(&mut checkpoint, id).await?;
|
let receipts = HealthCheckStatusReceipt::new(&mut checkpoint, id).await?;
|
||||||
@@ -153,9 +173,7 @@ pub async fn check<Db: DbHandle>(
|
|||||||
current_dependents
|
current_dependents
|
||||||
};
|
};
|
||||||
|
|
||||||
tracing::debug!("Checking health of {}", id);
|
|
||||||
let receipts = crate::dependencies::BreakTransitiveReceipts::new(&mut tx).await?;
|
let receipts = crate::dependencies::BreakTransitiveReceipts::new(&mut tx).await?;
|
||||||
tracing::debug!("Got receipts {}", id);
|
|
||||||
|
|
||||||
for (dependent, info) in (current_dependents).0.iter() {
|
for (dependent, info) in (current_dependents).0.iter() {
|
||||||
let failures: BTreeMap<HealthCheckId, HealthCheckResult> = health_results
|
let failures: BTreeMap<HealthCheckId, HealthCheckResult> = health_results
|
||||||
|
|||||||
@@ -226,7 +226,6 @@ impl DockerProcedure {
|
|||||||
let name = name.docker_name();
|
let name = name.docker_name();
|
||||||
let name: Option<&str> = name.as_ref().map(|x| &**x);
|
let name: Option<&str> = name.as_ref().map(|x| &**x);
|
||||||
let mut cmd = tokio::process::Command::new("docker");
|
let mut cmd = tokio::process::Command::new("docker");
|
||||||
tracing::debug!("{:?} is run", name);
|
|
||||||
let container_name = Self::container_name(pkg_id, name);
|
let container_name = Self::container_name(pkg_id, name);
|
||||||
cmd.arg("run")
|
cmd.arg("run")
|
||||||
.arg("--rm")
|
.arg("--rm")
|
||||||
@@ -408,7 +407,6 @@ impl DockerProcedure {
|
|||||||
let name: Option<&str> = name.as_deref();
|
let name: Option<&str> = name.as_deref();
|
||||||
let mut cmd = tokio::process::Command::new("docker");
|
let mut cmd = tokio::process::Command::new("docker");
|
||||||
|
|
||||||
tracing::debug!("{:?} is exec", name);
|
|
||||||
cmd.arg("exec");
|
cmd.arg("exec");
|
||||||
|
|
||||||
cmd.args(self.docker_args_inject(pkg_id).await?);
|
cmd.args(self.docker_args_inject(pkg_id).await?);
|
||||||
|
|||||||
Reference in New Issue
Block a user