Unverified Commit a27475de authored by MatejKosec's avatar MatejKosec Committed by GitHub
Browse files

fix: call inflight.mark_error() in media handler error paths (#7917)


Signed-off-by: default avatarMatej Kosec <mkosec@nvidia.com>
parent e24b25f8
...@@ -1998,7 +1998,9 @@ async fn images( ...@@ -1998,7 +1998,9 @@ async fn images(
.metrics_clone() .metrics_clone()
.inc_rejection(&model, super::metrics::Endpoint::Images); .inc_rejection(&model, super::metrics::Endpoint::Images);
} }
ErrorMessage::from_anyhow(e, "Failed to generate images") let err_response = ErrorMessage::from_anyhow(e, "Failed to generate images");
inflight.mark_error(extract_error_type_from_response(&err_response));
err_response
})?; })?;
// Process stream to collect metrics and drop http_queue_guard on first response // Process stream to collect metrics and drop http_queue_guard on first response
...@@ -2018,7 +2020,9 @@ async fn images( ...@@ -2018,7 +2020,9 @@ async fn images(
.await .await
.map_err(|e| { .map_err(|e| {
tracing::error!("Failed to fold images stream for {}: {:?}", request_id, e); tracing::error!("Failed to fold images stream for {}: {:?}", request_id, e);
ErrorMessage::internal_server_error("Failed to fold images stream") let err_response = ErrorMessage::internal_server_error("Failed to fold images stream");
inflight.mark_error(extract_error_type_from_response(&err_response));
err_response
})?; })?;
inflight.mark_ok(); inflight.mark_ok();
...@@ -2085,7 +2089,9 @@ async fn videos( ...@@ -2085,7 +2089,9 @@ async fn videos(
.metrics_clone() .metrics_clone()
.inc_rejection(&model, super::metrics::Endpoint::Videos); .inc_rejection(&model, super::metrics::Endpoint::Videos);
} }
ErrorMessage::from_anyhow(e, "Failed to generate videos") let err_response = ErrorMessage::from_anyhow(e, "Failed to generate videos");
inflight.mark_error(extract_error_type_from_response(&err_response));
err_response
})?; })?;
// Process stream to collect metrics and drop http_queue_guard on first token // Process stream to collect metrics and drop http_queue_guard on first token
...@@ -2105,7 +2111,9 @@ async fn videos( ...@@ -2105,7 +2111,9 @@ async fn videos(
.await .await
.map_err(|e| { .map_err(|e| {
tracing::error!("Failed to fold videos stream for {}: {:?}", request_id, e); tracing::error!("Failed to fold videos stream for {}: {:?}", request_id, e);
ErrorMessage::internal_server_error("Failed to fold videos stream") let err_response = ErrorMessage::internal_server_error("Failed to fold videos stream");
inflight.mark_error(extract_error_type_from_response(&err_response));
err_response
})?; })?;
inflight.mark_ok(); inflight.mark_ok();
...@@ -2150,7 +2158,9 @@ async fn video_stream( ...@@ -2150,7 +2158,9 @@ async fn video_stream(
.metrics_clone() .metrics_clone()
.inc_rejection(&model, super::metrics::Endpoint::Videos); .inc_rejection(&model, super::metrics::Endpoint::Videos);
} }
ErrorMessage::from_anyhow(e, "Failed to start video stream") let err_response = ErrorMessage::from_anyhow(e, "Failed to start video stream");
inflight.mark_error(extract_error_type_from_response(&err_response));
err_response
})?; })?;
// Capture the context to cancel the stream if the client disconnects. // Capture the context to cancel the stream if the client disconnects.
...@@ -2234,6 +2244,7 @@ async fn video_stream( ...@@ -2234,6 +2244,7 @@ async fn video_stream(
} }
_ = ctx.stopped() => { _ = ctx.stopped() => {
tracing::trace!("Context stopped; breaking MJPEG stream"); tracing::trace!("Context stopped; breaking MJPEG stream");
inflight.mark_error(ErrorType::Cancelled);
break; break;
} }
} }
...@@ -2249,6 +2260,8 @@ async fn video_stream( ...@@ -2249,6 +2260,8 @@ async fn video_stream(
.body(Body::from_stream(monitored_stream)) .body(Body::from_stream(monitored_stream))
.map(|r| r.into_response()) .map(|r| r.into_response())
.map_err(|e| { .map_err(|e| {
// inflight is already owned by the monitored_stream which handles
// mark_ok (stream end) and mark_error (cancellation).
ErrorMessage::internal_server_error(&format!("Failed to build MJPEG response: {e}")) ErrorMessage::internal_server_error(&format!("Failed to build MJPEG response: {e}"))
}) })
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment