db-snapshot: propagate any node snapshot error through RPC call
In particular, it means that "garage meta snapshot --all" will get an exit code of 1 if any node fails to snapshot. This makes sure that any external tool trying to snapshot nodes (e.g. from cron) will be aware of the failure. Fix #920
This commit is contained in:
parent
bb247e6a72
commit
9178de819c
1 changed files with 8 additions and 1 deletions
|
@ -495,7 +495,14 @@ impl AdminRpcHandler {
|
|||
ret.push(format!("{:?}\t{}", to, res_str));
|
||||
}
|
||||
|
||||
Ok(AdminRpc::Ok(format_table_to_string(ret)))
|
||||
if resps.iter().any(|resp| match resp {
|
||||
Err(_) => true,
|
||||
Ok(_) => false,
|
||||
}) {
|
||||
Err(Error::BadRequest(format_table_to_string(ret)).into())
|
||||
} else {
|
||||
Ok(AdminRpc::Ok(format_table_to_string(ret)))
|
||||
}
|
||||
}
|
||||
MetaOperation::Snapshot { all: false } => {
|
||||
garage_model::snapshot::async_snapshot_metadata(&self.garage).await?;
|
||||
|
|
Loading…
Add table
Reference in a new issue