mirror of
https://github.com/rustfs/rustfs.git
synced 2026-09-22 02:23:45 +00:00
test(heal): retry G14 outage put probes (#7704)
Treat SlowDownRead as a retryable outage PUT probe response in the G14 multi-pool runner, and label terminal candidate failures with stage context. Co-authored-by: zhi22915 <qiuzgang@gmail.com>
This commit is contained in:
@@ -685,7 +685,7 @@ mod tests {
|
||||
error.as_service_error().and_then(ProvideErrorMetadata::code) == Some("ServiceUnavailable")
|
||||
}
|
||||
|
||||
fn is_retryable_deferred_put_after_rejoin(error: &SdkError<PutObjectError>) -> bool {
|
||||
fn is_retryable_outage_put(error: &SdkError<PutObjectError>) -> bool {
|
||||
matches!(
|
||||
error.as_service_error().and_then(ProvideErrorMetadata::code),
|
||||
Some("SlowDownRead" | "ServiceUnavailable")
|
||||
@@ -1602,12 +1602,19 @@ mod tests {
|
||||
outage_key = Some(candidate_key);
|
||||
break;
|
||||
}
|
||||
Ok(Err(error)) if is_service_unavailable_put(&error) => {
|
||||
Ok(Err(error)) if is_retryable_outage_put(&error) => {
|
||||
service_unavailable_outage_writes += 1;
|
||||
last_service_unavailable = Some(format!("{error:?}"));
|
||||
}
|
||||
Ok(Err(error)) => return Err(error.into()),
|
||||
Err(error) => return Err(error.into()),
|
||||
Ok(Err(error)) => {
|
||||
return Err(format!("outage PUT candidate {candidate_key} failed before target rejoin: {error}").into());
|
||||
}
|
||||
Err(error) => {
|
||||
return Err(format!(
|
||||
"outage PUT candidate {candidate_key} timed out before target rejoin after 30s: {error}"
|
||||
)
|
||||
.into());
|
||||
}
|
||||
}
|
||||
}
|
||||
let outage_key = match outage_key {
|
||||
@@ -2188,7 +2195,7 @@ mod tests {
|
||||
.await;
|
||||
match put_result {
|
||||
Ok(Ok(_)) => break,
|
||||
Ok(Err(error)) if is_retryable_deferred_put_after_rejoin(&error) && Instant::now() < deferred_deadline => {
|
||||
Ok(Err(error)) if is_retryable_outage_put(&error) && Instant::now() < deferred_deadline => {
|
||||
sleep(Duration::from_secs(1)).await;
|
||||
}
|
||||
Ok(Err(error)) => {
|
||||
|
||||
Reference in New Issue
Block a user