@@ -421,10 +421,25 @@ InferenceRequest::Run(std::unique_ptr<InferenceRequest>& request)
421421 return status;
422422}
423423
424+ FailureReason
425+ stringToFailureReason (const std::string& error_type)
426+ {
427+ if (error_type == " REJECTED" ) {
428+ return FailureReason::REJECTED;
429+ }
430+ if (error_type == " CANCELED" ) {
431+ return FailureReason::CANCELED;
432+ }
433+ if (error_type == " BACKEND" ) {
434+ return FailureReason::BACKEND;
435+ }
436+ return FailureReason::OTHER;
437+ }
438+
424439void
425440InferenceRequest::RespondIfError (
426441 std::unique_ptr<InferenceRequest>& request, const Status& status,
427- const bool release_request)
442+ const bool release_request, FailureReason reason )
428443{
429444 if (status.IsOk ()) {
430445 return ;
@@ -442,7 +457,10 @@ InferenceRequest::RespondIfError(
442457 InferenceResponse::SendWithStatus (
443458 std::move (response), TRITONSERVER_RESPONSE_COMPLETE_FINAL, status),
444459 (request->LogRequest () + " failed to send error response" ).c_str ());
445-
460+ #ifdef TRITON_ENABLE_STATS
461+ request->ReportErrorStatistics (
462+ request->model_raw_ ->MetricReporter ().get (), reason);
463+ #endif
446464 // If releasing the request then invoke the release callback which
447465 // gives ownership to the callback. So can't access 'request' after
448466 // this point.
@@ -452,20 +470,6 @@ InferenceRequest::RespondIfError(
452470 }
453471}
454472
455- void
456- InferenceRequest::RespondIfError (
457- std::vector<std::unique_ptr<InferenceRequest>>& requests,
458- const Status& status, const bool release_requests)
459- {
460- if (status.IsOk ()) {
461- return ;
462- }
463-
464- for (auto & request : requests) {
465- RespondIfError (request, status, release_requests);
466- }
467- }
468-
469473Status
470474InferenceRequest::Release (
471475 std::unique_ptr<InferenceRequest>&& request, const uint32_t release_flags)
@@ -1371,6 +1375,21 @@ InferenceRequest::ValidateBytesInputs(
13711375}
13721376
13731377#ifdef TRITON_ENABLE_STATS
1378+
1379+ void
1380+ InferenceRequest::ReportErrorStatistics (
1381+ MetricModelReporter* metric_reporter, FailureReason reason)
1382+ {
1383+ INFER_STATS_DECL_TIMESTAMP (request_end_ns);
1384+ model_raw_->MutableStatsAggregator ()->UpdateFailure (
1385+ metric_reporter, request_start_ns_, request_end_ns, reason);
1386+ if (secondary_stats_aggregator_ != nullptr ) {
1387+ secondary_stats_aggregator_->UpdateFailure (
1388+ nullptr /* metric_reporter */ , request_start_ns_, request_end_ns,
1389+ reason);
1390+ }
1391+ }
1392+
13741393void
13751394InferenceRequest::ReportStatistics (
13761395 MetricModelReporter* metric_reporter, bool success,
@@ -1407,10 +1426,12 @@ InferenceRequest::ReportStatistics(
14071426 }
14081427 } else {
14091428 model_raw_->MutableStatsAggregator ()->UpdateFailure (
1410- metric_reporter, request_start_ns_, request_end_ns);
1429+ metric_reporter, request_start_ns_, request_end_ns,
1430+ FailureReason::BACKEND);
14111431 if (secondary_stats_aggregator_ != nullptr ) {
14121432 secondary_stats_aggregator_->UpdateFailure (
1413- nullptr /* metric_reporter */ , request_start_ns_, request_end_ns);
1433+ nullptr /* metric_reporter */ , request_start_ns_, request_end_ns,
1434+ FailureReason::BACKEND);
14141435 }
14151436 }
14161437}
@@ -1443,10 +1464,12 @@ InferenceRequest::ReportStatisticsWithDuration(
14431464 }
14441465 } else {
14451466 model_raw_->MutableStatsAggregator ()->UpdateFailure (
1446- metric_reporter, request_start_ns_, request_end_ns);
1467+ metric_reporter, request_start_ns_, request_end_ns,
1468+ FailureReason::OTHER);
14471469 if (secondary_stats_aggregator_ != nullptr ) {
14481470 secondary_stats_aggregator_->UpdateFailure (
1449- nullptr /* metric_reporter */ , request_start_ns_, request_end_ns);
1471+ nullptr /* metric_reporter */ , request_start_ns_, request_end_ns,
1472+ FailureReason::OTHER);
14501473 }
14511474 }
14521475}
@@ -1850,5 +1873,4 @@ operator!=(
18501873{
18511874 return !(lhs == rhs);
18521875}
1853-
18541876}} // namespace triton::core
0 commit comments