diff options
author | hcpp <hcpp@ydb.tech> | 2023-09-26 12:10:47 +0300 |
---|---|---|
committer | hcpp <hcpp@ydb.tech> | 2023-09-26 13:05:13 +0300 |
commit | 2b0c4b4dbf4284b4290d53d105aa598d1822ab49 (patch) | |
tree | af3a2ab8a3198da3cdab436104d3f01f0f9d4247 | |
parent | d74f645dece57159dc759259e12380ac58acba88 (diff) | |
download | ydb-2b0c4b4dbf4284b4290d53d105aa598d1822ab49.tar.gz |
checking issue code instead of string
-rw-r--r-- | ydb/core/fq/libs/control_plane_storage/internal/task_ping.cpp | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/ydb/core/fq/libs/control_plane_storage/internal/task_ping.cpp b/ydb/core/fq/libs/control_plane_storage/internal/task_ping.cpp index c91bf9e9088..8addf7691c8 100644 --- a/ydb/core/fq/libs/control_plane_storage/internal/task_ping.cpp +++ b/ydb/core/fq/libs/control_plane_storage/internal/task_ping.cpp @@ -2,10 +2,11 @@ #include <util/datetime/base.h> -#include <ydb/core/metering/metering.h> #include <ydb/core/fq/libs/control_plane_storage/util.h> #include <ydb/core/fq/libs/db_schema/db_schema.h> +#include <ydb/core/metering/metering.h> #include <ydb/library/protobuf_printer/size_printer.h> +#include <ydb/library/yql/core/issue/protos/issue_id.pb.h> #include <google/protobuf/util/time_util.h> @@ -13,6 +14,25 @@ namespace NFq { +namespace { + +bool CheckIssuesCode(const NYql::TIssues& issues, ::NYql::TIssuesIds::EIssueCode code) { + for (const auto& issue: issues) { + bool found = false; + NYql::WalkThroughIssues(issue, false, [&found, code](const auto& issue, ui16) { + if (issue.GetCode() == static_cast<NYql::TIssueCode>(code)) { + found = true; + } + }); + if (found) { + return found; + } + } + return false; +} + +} + struct TPingTaskParams { TString Query; TParams Params; @@ -581,12 +601,13 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvFinalStatus return; } - static const TString unavailablePattern = "Kikimr cluster or one of its subsystems was unavailable"; - if (event.Issues.ToOneLineString().Contains(unavailablePattern) || event.TransientIssues.ToOneLineString().Contains(unavailablePattern)) { + if (CheckIssuesCode(event.Issues, NYql::TIssuesIds::KIKIMR_TEMPORARILY_UNAVAILABLE) || CheckIssuesCode(event.TransientIssues, NYql::TIssuesIds::KIKIMR_TEMPORARILY_UNAVAILABLE)) { Counters.GetFinalStatusCounters(event.CloudId, event.Scope)->Unavailable->Inc(); } + Counters.GetFinalStatusCounters(event.CloudId, event.Scope)->IncByStatus(event.Status); LOG_YQ_AUDIT_SERVICE_INFO("FinalStatus: cloud id: [" << event.CloudId << "], scope: [" << event.Scope << "], query id: [" << event.QueryId << "], job id: [" << event.JobId << "], status: " << FederatedQuery::QueryMeta::ComputeStatus_Name(event.Status)); } + } // NFq |