aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhor911 <hor911@ydb.tech>2022-09-01 15:48:26 +0300
committerhor911 <hor911@ydb.tech>2022-09-01 15:48:26 +0300
commit0a30ba9900ac6179d77eba071c45ccbb84f552ea (patch)
tree069c1a430d43856973137152438783c2203d8923
parent1624cd16d8954612bd2614106dee31d99da0450d (diff)
downloadydb-0a30ba9900ac6179d77eba071c45ccbb84f552ea.tar.gz
Log DB errors
-rw-r--r--ydb/core/yq/libs/control_plane_storage/internal/rate_limiter_resources.cpp2
-rw-r--r--ydb/core/yq/libs/control_plane_storage/internal/task_get.cpp2
-rw-r--r--ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage.cpp36
-rw-r--r--ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_bindings.cpp4
-rw-r--r--ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_connections.cpp4
-rw-r--r--ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_impl.h2
-rw-r--r--ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_queries.cpp12
7 files changed, 41 insertions, 21 deletions
diff --git a/ydb/core/yq/libs/control_plane_storage/internal/rate_limiter_resources.cpp b/ydb/core/yq/libs/control_plane_storage/internal/rate_limiter_resources.cpp
index 0a44c1a1f39..128bc20f96b 100644
--- a/ydb/core/yq/libs/control_plane_storage/internal/rate_limiter_resources.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/internal/rate_limiter_resources.cpp
@@ -318,7 +318,7 @@ void TYdbControlPlaneStorageActor::HandleRateLimiterImpl(TEventPtr& ev) {
readQueryBuilder.AddText(text);
const auto query = readQueryBuilder.Build();
- auto [readStatus, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
+ auto [readStatus, resultSets] = Read(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo);
readStatus.Subscribe(
[resultSets = resultSets, actorSystem = NActors::TActivationContext::ActorSystem(), requestActor] (const TAsyncStatus& status) {
actorSystem->Send(new IEventHandle(requestActor, requestActor, new TEvPrivate::TEvDbRequestResult(status, std::move(resultSets))));
diff --git a/ydb/core/yq/libs/control_plane_storage/internal/task_get.cpp b/ydb/core/yq/libs/control_plane_storage/internal/task_get.cpp
index f91e89755d3..208a2646480 100644
--- a/ydb/core/yq/libs/control_plane_storage/internal/task_get.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/internal/task_get.cpp
@@ -301,7 +301,7 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvGetTaskRequ
};
const auto query = queryBuilder.Build();
- auto [readStatus, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo, TTxSettings::StaleRO());
+ auto [readStatus, resultSets] = Read(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo, TTxSettings::StaleRO());
auto result = readStatus.Apply(
[=,
resultSets=resultSets,
diff --git a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage.cpp b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage.cpp
index 935f939ae45..e26f3c44577 100644
--- a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage.cpp
@@ -326,6 +326,7 @@ TAsyncStatus ExecDbRequest(TDbPool::TPtr dbPool, std::function<NYdb::TAsyncStatu
}
std::pair<TAsyncStatus, std::shared_ptr<TVector<NYdb::TResultSet>>> TYdbControlPlaneStorageActor::Read(
+ NActors::TActorSystem* actorSystem,
const TString& query,
const NYdb::TParams& params,
const TRequestCountersPtr& requestCounters,
@@ -343,13 +344,16 @@ std::pair<TAsyncStatus, std::shared_ptr<TVector<NYdb::TResultSet>>> TYdbControlP
++(*retryCount);
CollectDebugInfo(query, params, session, debugInfo);
auto result = session.ExecuteDataQuery(query, TTxControl::BeginTx(transactionMode).CommitTx(), params, NYdb::NTable::TExecDataQuerySettings().KeepInQueryCache(true));
- return result.Apply([retryOnTli, resultSet] (const TFuture<TDataQueryResult>& future) {
+ return result.Apply([retryOnTli, resultSet, actorSystem, query] (const TFuture<TDataQueryResult>& future) {
NYdb::NTable::TDataQueryResult result = future.GetValue();
*resultSet = result.GetResultSets();
auto status = static_cast<TStatus>(result);
if (status.GetStatus() == EStatus::SCHEME_ERROR) { // retry if table does not exist
return TStatus{EStatus::UNAVAILABLE, NYql::TIssues{status.GetIssues()}};
}
+ if (!status.IsSuccess()) {
+ CPS_LOG_AS_W(*actorSystem, "DB Error, Status: " << status.GetStatus() << ", Issues: " << status.GetIssues().ToOneLineString() << ", Query: " << query);
+ }
if (!retryOnTli && status.GetStatus() == EStatus::ABORTED) {
return TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{status.GetIssues()}};
}
@@ -363,6 +367,7 @@ std::pair<TAsyncStatus, std::shared_ptr<TVector<NYdb::TResultSet>>> TYdbControlP
}
TAsyncStatus TYdbControlPlaneStorageActor::Validate(
+ NActors::TActorSystem* actorSystem,
std::shared_ptr<TMaybe<TTransaction>> transaction,
size_t item,
const TVector<TValidationQuery>& validators,
@@ -378,7 +383,7 @@ TAsyncStatus TYdbControlPlaneStorageActor::Validate(
const TValidationQuery& validatonItem = validators[item];
CollectDebugInfo(validatonItem.Query, validatonItem.Params, session, debugInfo);
auto result = session.ExecuteDataQuery(validatonItem.Query, item == 0 ? TTxControl::BeginTx(transactionMode) : TTxControl::Tx(**transaction), validatonItem.Params, NYdb::NTable::TExecDataQuerySettings().KeepInQueryCache(true));
- return result.Apply([=, validator=validatonItem.Validator] (const TFuture<TDataQueryResult>& future) {
+ return result.Apply([=, validator=validatonItem.Validator, query=validatonItem.Query] (const TFuture<TDataQueryResult>& future) {
NYdb::NTable::TDataQueryResult result = future.GetValue();
*transaction = result.GetTransaction();
auto status = static_cast<TStatus>(result);
@@ -386,13 +391,14 @@ TAsyncStatus TYdbControlPlaneStorageActor::Validate(
return MakeFuture(TStatus{EStatus::UNAVAILABLE, NYql::TIssues{status.GetIssues()}});
}
if (!status.IsSuccess()) {
+ CPS_LOG_AS_W(*actorSystem, "DB Error, Status: " << status.GetStatus() << ", Issues: " << status.GetIssues().ToOneLineString() << ", Query: " << query);
return MakeFuture(status);
}
*successFinish = validator(result);
if (*successFinish) {
return MakeFuture(TStatus{EStatus::SUCCESS, NYql::TIssues{}});
}
- return Validate(transaction, item + 1, validators, session, successFinish, debugInfo);
+ return Validate(actorSystem, transaction, item + 1, validators, session, successFinish, debugInfo);
});
}
@@ -417,6 +423,9 @@ TAsyncStatus TYdbControlPlaneStorageActor::Write(
if (status.GetStatus() == EStatus::SCHEME_ERROR) { // retry if table does not exist
return TStatus{EStatus::UNAVAILABLE, NYql::TIssues{status.GetIssues()}};
}
+ if (!status.IsSuccess()) {
+ CPS_LOG_AS_W(*actorSystem, "DB Error, Status: " << status.GetStatus() << ", Issues: " << status.GetIssues().ToOneLineString() << ", Query: " << query);
+ }
if (!retryOnTli && status.GetStatus() == EStatus::ABORTED) {
return TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{status.GetIssues()}};
}
@@ -430,7 +439,7 @@ TAsyncStatus TYdbControlPlaneStorageActor::Write(
}
++(*retryCount);
std::shared_ptr<bool> successFinish = std::make_shared<bool>();
- return Validate(transaction, 0, validators, session, successFinish, debugInfo).Apply([=](const auto& future) {
+ return Validate(actorSystem, transaction, 0, validators, session, successFinish, debugInfo).Apply([=](const auto& future) {
try {
auto status = future.GetValue();
if (!status.IsSuccess()) {
@@ -493,7 +502,7 @@ TAsyncStatus TYdbControlPlaneStorageActor::ReadModifyWrite(
auto readModifyWriteHandler = [=](TSession session) {
CollectDebugInfo(readQuery, readParams, session, debugInfo);
auto readResult = session.ExecuteDataQuery(readQuery, validators ? TTxControl::Tx(**transaction) : TTxControl::BeginTx(transactionMode), readParams, NYdb::NTable::TExecDataQuerySettings().KeepInQueryCache(true));
- auto readResultStatus = readResult.Apply([resultSets, transaction] (const TFuture<TDataQueryResult>& future) {
+ auto readResultStatus = readResult.Apply([resultSets, transaction, actorSystem, readQuery] (const TFuture<TDataQueryResult>& future) {
NYdb::NTable::TDataQueryResult result = future.GetValue();
*resultSets = result.GetResultSets();
*transaction = result.GetTransaction();
@@ -501,6 +510,9 @@ TAsyncStatus TYdbControlPlaneStorageActor::ReadModifyWrite(
if (status.GetStatus() == EStatus::SCHEME_ERROR) { // retry if table does not exist
return TStatus{EStatus::UNAVAILABLE, NYql::TIssues{status.GetIssues()}};
}
+ if (!status.IsSuccess()) {
+ CPS_LOG_AS_W(*actorSystem, "DB Error, Status: " << status.GetStatus() << ", Issues: " << status.GetIssues().ToOneLineString() << ", Query: " << readQuery);
+ }
return status;
});
@@ -508,7 +520,7 @@ TAsyncStatus TYdbControlPlaneStorageActor::ReadModifyWrite(
return future.GetValue().IsSuccess() ? prepare(*resultSets) : make_pair(TString(""), NYdb::TParamsBuilder{}.Build());
});
- return resultPrepare.Apply([=](const auto& future) mutable {
+ return resultPrepare.Apply([=, actorSystem=actorSystem](const auto& future) mutable {
if (!readResultStatus.GetValue().IsSuccess()) {
return readResultStatus;
}
@@ -516,23 +528,29 @@ TAsyncStatus TYdbControlPlaneStorageActor::ReadModifyWrite(
try {
auto [writeQuery, params] = future.GetValue();
if (!writeQuery) {
- return transaction->Get()->Commit().Apply([] (const auto& future) {
+ return transaction->Get()->Commit().Apply([actorSystem=actorSystem] (const auto& future) {
auto result = future.GetValue();
auto status = static_cast<TStatus>(result);
if (status.GetStatus() == EStatus::SCHEME_ERROR) { // retry if table does not exist
return TStatus{EStatus::UNAVAILABLE, NYql::TIssues{status.GetIssues()}};
}
+ if (!status.IsSuccess()) {
+ CPS_LOG_AS_W(*actorSystem, "DB Error, Status: " << status.GetStatus() << ", Issues: " << status.GetIssues().ToOneLineString() << ", COMMIT");
+ }
return status;
});
}
CollectDebugInfo(writeQuery, params, session, debugInfo);
auto writeResult = session.ExecuteDataQuery(writeQuery, TTxControl::Tx(**transaction).CommitTx(), params, NYdb::NTable::TExecDataQuerySettings().KeepInQueryCache(true));
- return writeResult.Apply([retryOnTli] (const TFuture<TDataQueryResult>& future) {
+ return writeResult.Apply([retryOnTli, actorSystem, writeQuery=writeQuery] (const TFuture<TDataQueryResult>& future) {
NYdb::NTable::TDataQueryResult result = future.GetValue();
auto status = static_cast<TStatus>(result);
if (status.GetStatus() == EStatus::SCHEME_ERROR) { // retry if table does not exist
return TStatus{EStatus::UNAVAILABLE, NYql::TIssues{status.GetIssues()}};
}
+ if (!status.IsSuccess()) {
+ CPS_LOG_AS_W(*actorSystem, "DB Error, Status: " << status.GetStatus() << ", Issues: " << status.GetIssues().ToOneLineString() << ", Query: " << writeQuery);
+ }
if (!retryOnTli && status.GetStatus() == EStatus::ABORTED) {
return TStatus{EStatus::GENERIC_ERROR, NYql::TIssues{status.GetIssues()}};
}
@@ -558,7 +576,7 @@ TAsyncStatus TYdbControlPlaneStorageActor::ReadModifyWrite(
++(*retryCount);
std::shared_ptr<bool> successFinish = std::make_shared<bool>();
- return Validate(transaction, 0, validators, session, successFinish, debugInfo).Apply([=](const auto& future) {
+ return Validate(actorSystem, transaction, 0, validators, session, successFinish, debugInfo).Apply([=](const auto& future) {
try {
auto status = future.GetValue();
if (!status.IsSuccess()) {
diff --git a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_bindings.cpp b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_bindings.cpp
index d277f5b0708..7a290450a59 100644
--- a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_bindings.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_bindings.cpp
@@ -225,7 +225,7 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvListBinding
const auto query = queryBuilder.Build();
auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
+ auto [result, resultSets] = Read(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo);
auto prepare = [resultSets=resultSets, limit] {
if (resultSets->size() != 1) {
ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
@@ -329,7 +329,7 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvDescribeBin
const auto query = queryBuilder.Build();
auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
+ auto [result, resultSets] = Read(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo);
auto prepare = [=, resultSets=resultSets] {
if (resultSets->size() != 1) {
ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
diff --git a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_connections.cpp b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_connections.cpp
index 40a0aaa38d6..137d9c55d2a 100644
--- a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_connections.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_connections.cpp
@@ -218,7 +218,7 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvListConnect
const auto query = queryBuilder.Build();
auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
+ auto [result, resultSets] = Read(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo);
auto prepare = [resultSets=resultSets, limit] {
if (resultSets->size() != 1) {
ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
@@ -312,7 +312,7 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvDescribeCon
const auto query = queryBuilder.Build();
auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
+ auto [result, resultSets] = Read(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo);
auto prepare = [=, resultSets=resultSets] {
if (resultSets->size() != 1) {
ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
diff --git a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_impl.h b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_impl.h
index 4b916803853..0c08f7235fb 100644
--- a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_impl.h
+++ b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_impl.h
@@ -469,6 +469,7 @@ private:
bool IsSuperUser(const TString& user);
std::pair<TAsyncStatus, std::shared_ptr<TVector<NYdb::TResultSet>>> Read(
+ NActors::TActorSystem* actorSystem,
const TString& query,
const NYdb::TParams& params,
const TRequestCountersPtr& requestCounters,
@@ -477,6 +478,7 @@ private:
bool retryOnTli = true);
TAsyncStatus Validate(
+ NActors::TActorSystem* actorSystem,
std::shared_ptr<TMaybe<TTransaction>> transaction,
size_t item, const TVector<TValidationQuery>& validators,
TSession session,
diff --git a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_queries.cpp b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_queries.cpp
index a8be5b0cb4a..a431b8945f0 100644
--- a/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_queries.cpp
+++ b/ydb/core/yq/libs/control_plane_storage/ydb_control_plane_storage_queries.cpp
@@ -479,7 +479,7 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvListQueries
const auto read = queryBuilder.Build();
auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(read.Sql, read.Params, requestCounters, debugInfo);
+ auto [result, resultSets] = Read(NActors::TActivationContext::ActorSystem(), read.Sql, read.Params, requestCounters, debugInfo);
auto prepare = [resultSets=resultSets, limit] {
if (resultSets->size() != 1) {
ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
@@ -569,7 +569,7 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvDescribeQue
);
const auto query = queryBuilder.Build();
auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
+ auto [result, resultSets] = Read(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo);
auto prepare = [resultSets=resultSets, user,permissions] {
if (resultSets->size() != 1) {
ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
@@ -693,7 +693,7 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvGetQuerySta
const auto read = queryBuilder.Build();
auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(read.Sql, read.Params, requestCounters, debugInfo);
+ auto [result, resultSets] = Read(NActors::TActivationContext::ActorSystem(), read.Sql, read.Params, requestCounters, debugInfo);
auto prepare = [resultSets=resultSets, user,permissions] {
if (resultSets->size() != 1) {
ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
@@ -1512,7 +1512,7 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvGetResultDa
const auto query = queryBuilder.Build();
auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
+ auto [result, resultSets] = Read(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo);
auto prepare = [resultSets=resultSets, resultSetIndex, user, permissions] {
if (resultSets->size() != 2) {
ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 2 but equal " << resultSets->size() << ". Please contact internal support";
@@ -1670,7 +1670,7 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvListJobsReq
const auto query = queryBuilder.Build();
auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
+ auto [result, resultSets] = Read(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo);
auto prepare = [resultSets=resultSets, limit] {
if (resultSets->size() != 1) {
ythrow TControlPlaneStorageException(TIssuesIds::INTERNAL_ERROR) << "Result set size is not equal to 1 but equal " << resultSets->size() << ". Please contact internal support";
@@ -1770,7 +1770,7 @@ void TYdbControlPlaneStorageActor::Handle(TEvControlPlaneStorage::TEvDescribeJob
const auto query = queryBuilder.Build();
auto debugInfo = Config.Proto.GetEnableDebugMode() ? std::make_shared<TDebugInfo>() : TDebugInfoPtr{};
- auto [result, resultSets] = Read(query.Sql, query.Params, requestCounters, debugInfo);
+ auto [result, resultSets] = Read(NActors::TActivationContext::ActorSystem(), query.Sql, query.Params, requestCounters, debugInfo);
auto prepare = [=, id=request.job_id(), resultSets=resultSets] {
if (resultSets->size() != 1) {