aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorva-kuznecov <va-kuznecov@ydb.tech>2023-01-31 13:00:56 +0300
committerva-kuznecov <va-kuznecov@ydb.tech>2023-01-31 13:00:56 +0300
commit43ee08dedffa96b74c1b85b2993b891e236f6fd2 (patch)
tree82c9f391e15b90c4a133be2112fb5875571e6dab
parentbfc4889dce7f30e1bf2fef4fb6d9d079c1cbb105 (diff)
downloadydb-43ee08dedffa96b74c1b85b2993b891e236f6fd2.tar.gz
Fix session_actor's handling of TEvCloseSessionRequest in CleanupState
-rw-r--r--ydb/core/kqp/session_actor/kqp_session_actor.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/ydb/core/kqp/session_actor/kqp_session_actor.cpp b/ydb/core/kqp/session_actor/kqp_session_actor.cpp
index 496470b1592..b9835c8e873 100644
--- a/ydb/core/kqp/session_actor/kqp_session_actor.cpp
+++ b/ydb/core/kqp/session_actor/kqp_session_actor.cpp
@@ -1967,8 +1967,14 @@ public:
PassAway();
} else {
CleanupCtx.reset();
+ bool doNotKeepSession = QueryState && !QueryState->KeepSession;
QueryState.reset();
- Become(&TKqpSessionActor::ReadyState);
+ if (doNotKeepSession) {
+ // TEvCloseSessionRequest was received in final=false CleanupState, so actor should rerun Cleanup with final=true
+ CleanupAndPassAway();
+ } else {
+ Become(&TKqpSessionActor::ReadyState);
+ }
}
ExecuterId = TActorId{};
}