aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVladislav Kuznetsov <va.kuznecov@physics.msu.ru>2022-06-01 20:57:33 +0300
committerVladislav Kuznetsov <va.kuznecov@physics.msu.ru>2022-06-01 20:57:33 +0300
commitb1e1c9a6232b6f081569039d2e9db0b62ea4a7b3 (patch)
treeaff5006306f6c4b30e41b9e949f47f4b6a6903e6
parent3d80db4ae60a700529a4e45d782862bb7d58e004 (diff)
downloadydb-b1e1c9a6232b6f081569039d2e9db0b62ea4a7b3.tar.gz
Fix SIGSEGV in session actor KIKIMR-15033
ref:98cd6274eb4f5b0bf88f1cd27f520d4b722936db
-rw-r--r--ydb/core/kqp/kqp_session_actor.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/ydb/core/kqp/kqp_session_actor.cpp b/ydb/core/kqp/kqp_session_actor.cpp
index 22b7662b162..e8a5eb91cda 100644
--- a/ydb/core/kqp/kqp_session_actor.cpp
+++ b/ydb/core/kqp/kqp_session_actor.cpp
@@ -295,8 +295,8 @@ public:
if (ShutdownState && ShutdownState->SoftTimeoutReached()) {
// we reached the soft timeout, so at this point we don't allow to accept new queries for session.
LOG_N(TKqpRequestInfo("", SessionId)
- << "System shutdown requested: soft timeout reached, no queries can be accepted. Closing session.");
- ReplyQueryError(requestInfo, Ydb::StatusIds::BAD_SESSION, "Session is under shutdown");
+ << "System shutdown requested: soft timeout reached, no queries can be accepted. Closing session.");
+ ReplyProcessError(ev->Sender, proxyRequestId, Ydb::StatusIds::BAD_SESSION, "Session is under shutdown");
FinalCleanup();
return;
}
@@ -1439,6 +1439,17 @@ public:
Cleanup(IsFatalError(record->GetYdbStatus()));
}
+ void ReplyProcessError(const TActorId& sender, ui64 proxyRequestId, Ydb::StatusIds::StatusCode ydbStatus,
+ const TString& message)
+ {
+ LOG_W(TKqpRequestInfo("", SessionId) << "Reply process error, msg: " << message);
+
+ auto response = TEvKqp::TEvProcessResponse::Error(ydbStatus, message);
+
+ //AddTrailingInfo(response->Record);
+ Send(sender, response.Release(), 0, proxyRequestId);
+ }
+
void ReplyBusy(TEvKqp::TEvQueryRequest::TPtr& ev) {
auto& event = ev->Get()->Record;
@@ -1450,13 +1461,7 @@ public:
? Ydb::StatusIds::SESSION_BUSY
: Ydb::StatusIds::PRECONDITION_FAILED;
- TString message = "Pending previous query completion";
- LOG_W(requestInfo << " " << message);
-
- auto response = TEvKqp::TEvProcessResponse::Error(busyStatus, message);
-
- //AddTrailingInfo(response->Record);
- Send(ev->Sender, response.Release(), 0, proxyRequestId);
+ ReplyProcessError(ev->Sender, proxyRequestId, busyStatus, "Pending previous query completion");
}
static bool IsFatalError(const Ydb::StatusIds::StatusCode status) {