Skip to content

Commit 77cb18f

Browse files
authored
fix query errors processing (#6441)
1 parent 0fa3052 commit 77cb18f

File tree

2 files changed

+18
-15
lines changed

2 files changed

+18
-15
lines changed

ydb/core/viewer/json_query.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,7 @@ class TJsonQuery : public TViewerPipeClient<TJsonQuery> {
481481
NViewer::MakeErrorReply(jsonResponse, message, status);
482482

483483
if (Span) {
484-
Span.EndError("Error");
484+
Span.EndError(message);
485485
}
486486
}
487487

ydb/core/viewer/viewer.cpp

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -779,31 +779,34 @@ void MakeErrorReply(NJson::TJsonValue& jsonResponse, TString& message, const NYd
779779
NYql::IssuesToMessage(status.GetIssues(), &protoIssues);
780780

781781
message.clear();
782+
783+
NJson::TJsonValue& jsonIssues = jsonResponse["issues"];
784+
for (const auto& queryIssue : protoIssues) {
785+
NJson::TJsonValue& issue = jsonIssues.AppendValue({});
786+
NProtobufJson::Proto2Json(queryIssue, issue);
787+
}
788+
789+
TString textStatus = TStringBuilder() << status.GetStatus();
790+
jsonResponse["status"] = textStatus;
791+
782792
// find first deepest error
783793
std::stable_sort(protoIssues.begin(), protoIssues.end(), [](const Ydb::Issue::IssueMessage& a, const Ydb::Issue::IssueMessage& b) -> bool {
784794
return a.severity() < b.severity();
785795
});
786796

787-
while (protoIssues.size() > 0 && protoIssues[0].issuesSize() > 0) {
788-
protoIssues = protoIssues[0].issues();
797+
const google::protobuf::RepeatedPtrField<Ydb::Issue::IssueMessage>* protoIssuesPtr = &protoIssues;
798+
while (protoIssuesPtr->size() > 0 && protoIssuesPtr->at(0).issuesSize() > 0) {
799+
protoIssuesPtr = &protoIssuesPtr->at(0).issues();
789800
}
790801

791-
if (protoIssues.size() > 0) {
792-
const Ydb::Issue::IssueMessage& issue = protoIssues[0];
802+
if (protoIssuesPtr->size() > 0) {
803+
const Ydb::Issue::IssueMessage& issue = protoIssuesPtr->at(0);
793804
NProtobufJson::Proto2Json(issue, jsonResponse["error"]);
794805
message = issue.message();
806+
} else {
807+
jsonResponse["error"]["message"] = textStatus;
795808
}
796809

797-
NJson::TJsonValue& jsonIssues = jsonResponse["issues"];
798-
for (const auto& queryIssue : protoIssues) {
799-
NJson::TJsonValue& issue = jsonIssues.AppendValue({});
800-
NProtobufJson::Proto2Json(queryIssue, issue);
801-
}
802-
803-
TString textStatus = TStringBuilder() << status.GetStatus();
804-
805-
jsonResponse["status"] = textStatus;
806-
807810
if (message.empty()) {
808811
message = textStatus;
809812
}

0 commit comments

Comments
 (0)