diff --git a/ydb/core/http_proxy/http_req.cpp b/ydb/core/http_proxy/http_req.cpp index 576d42d228d4..9b824d2815dc 100644 --- a/ydb/core/http_proxy/http_req.cpp +++ b/ydb/core/http_proxy/http_req.cpp @@ -409,13 +409,23 @@ namespace NKikimr::NHttpProxy { HttpContext.ResponseData.Status = status; HttpContext.ResponseData.ErrorText = errorText; - HttpContext.DoReply(ctx, issueCode); + ReplyToHttpContext(ctx, issueCode); ctx.Send(AuthActor, new TEvents::TEvPoisonPill()); TBase::Die(ctx); } + void ReplyToHttpContext(const TActorContext& ctx, std::optional issueCode = std::nullopt) { + ReportLatencyCounters(ctx); + + if (issueCode.has_value()) { + HttpContext.DoReply(ctx, issueCode.value()); + } else { + HttpContext.DoReply(ctx); + } + } + void ReportInputCounters(const TActorContext& ctx) { if (InputCountersReported) { @@ -478,7 +488,6 @@ namespace NKikimr::NHttpProxy { HttpContext.ContentType == MIME_CBOR); FillOutputCustomMetrics( *(dynamic_cast(ev->Get()->Message.Get())), HttpContext, ctx); - ReportLatencyCounters(ctx); /* deprecated metric: */ ctx.Send(MakeMetricsServiceID(), new TEvServerlessProxy::TEvCounter{1, true, true, BuildLabels(Method, HttpContext, "api.http.success_per_second", setStreamPrefix) @@ -495,7 +504,7 @@ namespace NKikimr::NHttpProxy { {"code", "200"}, {"name", "api.http.data_streams.response.count"}} }); - HttpContext.DoReply(ctx); + ReplyToHttpContext(ctx); } else { auto retryClass = NYdb::NPersQueue::GetRetryErrorClass(ev->Get()->Status->GetStatus());