diff options
author | Vladislav Kuznetsov <va.kuznecov@physics.msu.ru> | 2022-06-01 20:57:33 +0300 |
---|---|---|
committer | Vladislav Kuznetsov <va.kuznecov@physics.msu.ru> | 2022-06-01 20:57:33 +0300 |
commit | b1e1c9a6232b6f081569039d2e9db0b62ea4a7b3 (patch) | |
tree | aff5006306f6c4b30e41b9e949f47f4b6a6903e6 | |
parent | 3d80db4ae60a700529a4e45d782862bb7d58e004 (diff) | |
download | ydb-b1e1c9a6232b6f081569039d2e9db0b62ea4a7b3.tar.gz |
Fix SIGSEGV in session actor KIKIMR-15033
ref:98cd6274eb4f5b0bf88f1cd27f520d4b722936db
-rw-r--r-- | ydb/core/kqp/kqp_session_actor.cpp | 23 |
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) { |