@@ -41,25 +41,21 @@ TMaybe<TErrorResponse> GetErrorResponse(const TString& hostName, const TString&
4141 return {};
4242 }
4343
44- TErrorResponse errorResponse (static_cast <int >(httpCode), requestId);
45-
4644 auto logAndSetError = [&] (int code, const TString& rawError) {
4745 YT_LOG_ERROR (" RSP %v - HTTP %v - %v" ,
4846 requestId,
4947 httpCode,
5048 rawError.data ());
51- errorResponse. SetError (TYtError (code, rawError));
49+ return TErrorResponse (TYtError (code, rawError), requestId );
5250 };
5351
5452
5553 switch (httpCode) {
5654 case NHttp::EStatusCode::TooManyRequests:
57- logAndSetError (NClusterErrorCodes::NSecurityClient::RequestQueueSizeLimitExceeded, " request rate limit exceeded" );
58- break ;
55+ return logAndSetError (NClusterErrorCodes::NSecurityClient::RequestQueueSizeLimitExceeded, " request rate limit exceeded" );
5956
6057 case NHttp::EStatusCode::InternalServerError:
61- logAndSetError (NClusterErrorCodes::NRpc::Unavailable, " internal error in proxy " + hostName);
62- break ;
58+ return logAndSetError (NClusterErrorCodes::NRpc::Unavailable, " internal error in proxy " + hostName);
6359
6460 default : {
6561 TStringStream httpHeaders;
@@ -78,7 +74,10 @@ TMaybe<TErrorResponse> GetErrorResponse(const TString& hostName, const TString&
7874 errorString.data ());
7975
8076 if (auto errorHeader = response->GetHeaders ()->Find (" X-YT-Error" )) {
81- errorResponse.ParseFromJsonError (*errorHeader);
77+ TYtError error;
78+ error.ParseFrom (*errorHeader);
79+
80+ TErrorResponse errorResponse (std::move (error), requestId);
8281 if (errorResponse.IsOk ()) {
8382 return Nothing ();
8483 }
@@ -88,13 +87,9 @@ TMaybe<TErrorResponse> GetErrorResponse(const TString& hostName, const TString&
8887 return errorResponse;
8988 }
9089
91- errorResponse.SetRawError (
92- errorString + " - X-YT-Error is missing in headers" );
93- break ;
90+ return TErrorResponse (TYtError (errorString + " - X-YT-Error is missing in headers" ), requestId);
9491 }
9592 }
96-
97- return errorResponse;
9893}
9994
10095void CheckErrorResponse (const TString& hostName, const TString& requestId, const NHttp::IResponsePtr& response)
@@ -317,8 +312,9 @@ class TCoreHttpResponse
317312 TMaybe<TErrorResponse> ParseError (const NHttp::THeadersPtr& headers)
318313 {
319314 if (auto errorHeader = headers->Find (" X-YT-Error" )) {
320- TErrorResponse errorResponse (static_cast <int >(Response_->GetStatusCode ()), RequestId_);
321- errorResponse.ParseFromJsonError (*errorHeader);
315+ TYtError error;
316+ error.ParseFrom (*errorHeader);
317+ TErrorResponse errorResponse (std::move (error), RequestId_);
322318 if (errorResponse.IsOk ()) {
323319 return Nothing ();
324320 }
0 commit comments