Skip to content

Commit 9af6b6f

Browse files
/operation/get doesn't retust stats (#12478)
1 parent cd3d76a commit 9af6b6f

File tree

2 files changed

+36
-8
lines changed

2 files changed

+36
-8
lines changed

ydb/core/viewer/json_local_rpc.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,13 @@ class TJsonLocalRpc : public TViewerPipeClient {
146146
auto result = MakeHolder<TEvLocalRpcPrivate::TEvGrpcRequestResult<TProtoResult>>();
147147
if constexpr (TRpcEv::IsOp) {
148148
if (response.operation().ready() && response.operation().status() == Ydb::StatusIds::SUCCESS) {
149-
TProtoResult rs;
150-
response.operation().result().UnpackTo(&rs);
151-
result->Message = std::move(rs);
149+
if (response.operation().has_result()) {
150+
TProtoResult rs;
151+
response.operation().result().UnpackTo(&rs);
152+
result->Message = std::move(rs);
153+
} else if constexpr (std::is_same_v<TProtoResult, Ydb::Operations::Operation>) {
154+
result->Message = std::move(response.operation());
155+
}
152156
}
153157
NYql::TIssues issues;
154158
NYql::IssuesFromMessage(response.operation().issues(), issues);

ydb/core/viewer/viewer_ut.cpp

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1838,11 +1838,11 @@ Y_UNIT_TEST_SUITE(Viewer) {
18381838

18391839
TString PostExecuteScript(TKeepAliveHttpClient& httpClient, TString query) {
18401840
TStringStream requestBody;
1841-
requestBody
1842-
<< "{ \"database\": \"/Root\","
1843-
<< " \"script_content\": {"
1844-
<< " \"text\": \"" << query << "\"},"
1845-
<< " \"exec_mode\": \"EXEC_MODE_EXECUTE\" }";
1841+
requestBody << R"json({
1842+
"database": "/Root",
1843+
"script_content": { "text": ")json" << query << R"json(" },
1844+
"exec_mode": "EXEC_MODE_EXECUTE",
1845+
"stats_mode": "STATS_MODE_FULL" })json";
18461846
TStringStream responseStream;
18471847
TKeepAliveHttpClient::THeaders headers;
18481848
headers["Content-Type"] = "application/json";
@@ -1867,6 +1867,22 @@ Y_UNIT_TEST_SUITE(Viewer) {
18671867
<< "&database=%2FRoot", &responseStream, headers);
18681868
const TString response = responseStream.ReadAll();
18691869
UNIT_ASSERT_EQUAL_C(statusCode, HTTP_OK, statusCode << ": " << response);
1870+
1871+
return response;
1872+
}
1873+
1874+
TString ListOperations(TKeepAliveHttpClient& httpClient) {
1875+
TStringStream requestBody;
1876+
TStringStream responseStream;
1877+
TKeepAliveHttpClient::THeaders headers;
1878+
headers["Content-Type"] = "application/json";
1879+
headers["Authorization"] = "test_ydb_token";
1880+
const TKeepAliveHttpClient::THttpCode statusCode = httpClient.DoGet(TStringBuilder()
1881+
<< "/operation/list?timeout=600000&kind=scriptexec"
1882+
<< "&database=%2FRoot", &responseStream, headers);
1883+
const TString response = responseStream.ReadAll();
1884+
UNIT_ASSERT_EQUAL_C(statusCode, HTTP_OK, statusCode << ": " << response);
1885+
18701886
return response;
18711887
}
18721888

@@ -1927,6 +1943,14 @@ Y_UNIT_TEST_SUITE(Viewer) {
19271943
response = GetOperation(httpClient, id);
19281944
NJson::ReadJsonTree(response, &jsonCfg, &json, /* throwOnError = */ true);
19291945
UNIT_ASSERT_EQUAL_C(json["issues"].GetArray().size(), 0, response);
1946+
UNIT_ASSERT_C(json.GetMap().contains("metadata"), response);
1947+
UNIT_ASSERT_C(json["metadata"].GetMap().contains("exec_stats"), response);
1948+
UNIT_ASSERT_C(json["metadata"].GetMap().at("exec_stats").GetMap().contains("process_cpu_time_us"), response);
1949+
1950+
response = ListOperations(httpClient);
1951+
NJson::ReadJsonTree(response, &jsonCfg, &json, /* throwOnError = */ true);
1952+
UNIT_ASSERT_EQUAL_C(json["operations"].GetArray().size(), 1, response);
1953+
UNIT_ASSERT_EQUAL_C(json["operations"].GetArray()[0]["id"], id, response);
19301954

19311955
response = GetFetchScript(httpClient, id);
19321956
NJson::ReadJsonTree(response, &jsonCfg, &json, /* throwOnError = */ true);

0 commit comments

Comments
 (0)