aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhcpp <hcpp@ydb.tech>2023-09-26 12:10:47 +0300
committerhcpp <hcpp@ydb.tech>2023-09-26 13:05:13 +0300
commit2b0c4b4dbf4284b4290d53d105aa598d1822ab49 (patch)
treeaf3a2ab8a3198da3cdab436104d3f01f0f9d4247
parentd74f645dece57159dc759259e12380ac58acba88 (diff)
downloadydb-2b0c4b4dbf4284b4290d53d105aa598d1822ab49.tar.gz
checking issue code instead of string
-rw-r--r--ydb/core/fq/libs/control_plane_storage/internal/task_ping.cpp27
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