feat(api-server): add container loadtest observability
This commit is contained in:
@@ -1529,15 +1529,19 @@ pub async fn claim_puzzle_work_point_incentive(
|
||||
pub async fn list_puzzle_gallery(
|
||||
State(state): State<AppState>,
|
||||
Extension(request_context): Extension<RequestContext>,
|
||||
) -> Result<Json<Value>, Response> {
|
||||
) -> Result<Response, Response> {
|
||||
if let Some(response) = state.puzzle_gallery_cache().read_fresh_response().await {
|
||||
crate::telemetry::record_puzzle_gallery_cache_hit();
|
||||
return Ok(puzzle_gallery_cached_json(&request_context, response));
|
||||
}
|
||||
crate::telemetry::record_puzzle_gallery_cache_miss();
|
||||
let _rebuild_guard = state.puzzle_gallery_cache().acquire_rebuild_guard().await;
|
||||
if let Some(response) = state.puzzle_gallery_cache().read_fresh_response().await {
|
||||
crate::telemetry::record_puzzle_gallery_cache_hit();
|
||||
return Ok(puzzle_gallery_cached_json(&request_context, response));
|
||||
}
|
||||
|
||||
let rebuild_started_at = std::time::Instant::now();
|
||||
let items = state
|
||||
.spacetime_client()
|
||||
.list_puzzle_gallery()
|
||||
@@ -1556,12 +1560,26 @@ pub async fn list_puzzle_gallery(
|
||||
.map(|item| map_puzzle_gallery_card_response(&state, item))
|
||||
.collect(),
|
||||
);
|
||||
state
|
||||
let cached_response = state
|
||||
.puzzle_gallery_cache()
|
||||
.store_response(response.clone())
|
||||
.await;
|
||||
.store_response(response)
|
||||
.await
|
||||
.map_err(|error| {
|
||||
puzzle_error_response(
|
||||
&request_context,
|
||||
PUZZLE_GALLERY_PROVIDER,
|
||||
AppError::from_status(StatusCode::INTERNAL_SERVER_ERROR).with_details(json!({
|
||||
"provider": PUZZLE_GALLERY_PROVIDER,
|
||||
"message": format!("拼图广场缓存序列化失败:{error}"),
|
||||
})),
|
||||
)
|
||||
})?;
|
||||
crate::telemetry::record_puzzle_gallery_cache_rebuild(
|
||||
rebuild_started_at.elapsed(),
|
||||
cached_response.data_json_len(),
|
||||
);
|
||||
|
||||
Ok(json_success_body(Some(&request_context), response))
|
||||
Ok(puzzle_gallery_cached_json(&request_context, cached_response))
|
||||
}
|
||||
|
||||
pub async fn get_puzzle_gallery_detail(
|
||||
|
||||
Reference in New Issue
Block a user