mirror of
https://github.com/deuxfleurs-org/garage.git
synced 2026-08-31 09:18:29 +00:00
fix server panic caused by garage json-api Metrics (fix #1132)
This commit is contained in:
@@ -12,7 +12,7 @@ use garage_rpc::*;
|
|||||||
|
|
||||||
use garage_model::garage::Garage;
|
use garage_model::garage::Garage;
|
||||||
|
|
||||||
use garage_api_common::helpers::is_default;
|
use garage_api_common::{common_error::CommonError, helpers::is_default};
|
||||||
|
|
||||||
use crate::api_server::{find_matching_nodes, AdminRpc, AdminRpcResponse};
|
use crate::api_server::{find_matching_nodes, AdminRpc, AdminRpcResponse};
|
||||||
use crate::error::Error;
|
use crate::error::Error;
|
||||||
|
|||||||
@@ -74,16 +74,18 @@ macro_rules! admin_endpoints {
|
|||||||
type Response = AdminApiResponse;
|
type Response = AdminApiResponse;
|
||||||
|
|
||||||
async fn handle(self, garage: &Arc<Garage>, admin: &Admin) -> Result<AdminApiResponse, Error> {
|
async fn handle(self, garage: &Arc<Garage>, admin: &Admin) -> Result<AdminApiResponse, Error> {
|
||||||
Ok(match self {
|
match self {
|
||||||
$(
|
$(
|
||||||
AdminApiRequest::$special_endpoint(_) => panic!(
|
AdminApiRequest::$special_endpoint(_) => Err(
|
||||||
concat!(stringify!($special_endpoint), " needs to go through a special handler")
|
Error::Common(CommonError::BadRequest(
|
||||||
|
concat!(stringify!($special_endpoint), " cannot be used outside of the HTTP Admin API").into()
|
||||||
|
))
|
||||||
),
|
),
|
||||||
)*
|
)*
|
||||||
$(
|
$(
|
||||||
AdminApiRequest::$endpoint(req) => AdminApiResponse::$endpoint(req.handle(garage, admin).await?),
|
AdminApiRequest::$endpoint(req) => Ok(AdminApiResponse::$endpoint(req.handle(garage, admin).await?)),
|
||||||
)*
|
)*
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user