@@ -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)
@@ -1389,6 +1393,21 @@ InferenceRequest::ValidateBytesInputs(
13891393}
13901394
13911395#ifdef TRITON_ENABLE_STATS
1396+
1397+ void
1398+ InferenceRequest::ReportErrorStatistics (
1399+ MetricModelReporter* metric_reporter, FailureReason reason)
1400+ {
1401+ INFER_STATS_DECL_TIMESTAMP (request_end_ns);
1402+ model_raw_->MutableStatsAggregator ()->UpdateFailure (
1403+ metric_reporter, request_start_ns_, request_end_ns, reason);
1404+ if (secondary_stats_aggregator_ != nullptr ) {
1405+ secondary_stats_aggregator_->UpdateFailure (
1406+ nullptr /* metric_reporter */ , request_start_ns_, request_end_ns,
1407+ reason);
1408+ }
1409+ }
1410+
13921411void
13931412InferenceRequest::ReportStatistics (
13941413 MetricModelReporter* metric_reporter, bool success,
@@ -1425,10 +1444,12 @@ InferenceRequest::ReportStatistics(
14251444 }
14261445 } else {
14271446 model_raw_->MutableStatsAggregator ()->UpdateFailure (
1428- metric_reporter, request_start_ns_, request_end_ns);
1447+ metric_reporter, request_start_ns_, request_end_ns,
1448+ FailureReason::BACKEND);
14291449 if (secondary_stats_aggregator_ != nullptr ) {
14301450 secondary_stats_aggregator_->UpdateFailure (
1431- nullptr /* metric_reporter */ , request_start_ns_, request_end_ns);
1451+ nullptr /* metric_reporter */ , request_start_ns_, request_end_ns,
1452+ FailureReason::BACKEND);
14321453 }
14331454 }
14341455}
@@ -1461,10 +1482,12 @@ InferenceRequest::ReportStatisticsWithDuration(
14611482 }
14621483 } else {
14631484 model_raw_->MutableStatsAggregator ()->UpdateFailure (
1464- metric_reporter, request_start_ns_, request_end_ns);
1485+ metric_reporter, request_start_ns_, request_end_ns,
1486+ FailureReason::OTHER);
14651487 if (secondary_stats_aggregator_ != nullptr ) {
14661488 secondary_stats_aggregator_->UpdateFailure (
1467- nullptr /* metric_reporter */ , request_start_ns_, request_end_ns);
1489+ nullptr /* metric_reporter */ , request_start_ns_, request_end_ns,
1490+ FailureReason::OTHER);
14681491 }
14691492 }
14701493}
@@ -1868,5 +1891,4 @@ operator!=(
18681891{
18691892 return !(lhs == rhs);
18701893}
1871-
18721894}} // namespace triton::core
0 commit comments