More minion error exclusions

This commit is contained in:
Mike Dilger 2024-06-21 08:57:02 +12:00
parent bc6258abdb
commit 4a987143db

View File

@ -36,6 +36,7 @@ use tokio::task;
use zeroize::Zeroize;
const MAX_EXCLUSION: u64 = 60 * 60 * 24 * 7; // one week max exclusion
const ONE_DAY_EXCLUSION: u64 = 60 * 60 * 24; // one day
type MinionResult = Result<MinionExitReason, Error>;
@ -470,6 +471,8 @@ impl Overlord {
exclusion = MAX_EXCLUSION;
} else if let ErrorKind::ReqwestHttpError(_) = e.kind {
exclusion = MAX_EXCLUSION;
} else if let ErrorKind::Timeout(_) = e.kind {
exclusion = ONE_DAY_EXCLUSION;
} else if let ErrorKind::Websocket(wserror) = e.kind {
if let tungstenite::error::Error::Http(response) = wserror {
exclusion = match response.status() {
@ -483,6 +486,8 @@ impl Overlord {
StatusCode::UNAVAILABLE_FOR_LEGAL_REASONS => MAX_EXCLUSION,
StatusCode::NOT_IMPLEMENTED => MAX_EXCLUSION,
StatusCode::BAD_GATEWAY => MAX_EXCLUSION,
StatusCode::SERVICE_UNAVAILABLE => MAX_EXCLUSION,
s if s.as_u16() >= 500 => ONE_DAY_EXCLUSION,
s if s.as_u16() >= 400 => 120,
_ => 120,
};
@ -497,6 +502,13 @@ impl Overlord {
}
_ => 120,
}
} else {
let f = format!("{}", wserror);
if f.contains("failed to lookup address") {
exclusion = MAX_EXCLUSION;
} else if f.contains("No route to host") {
exclusion = ONE_DAY_EXCLUSION;
}
}
}
}