aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorva-kuznecov <va-kuznecov@ydb.tech>2022-12-02 18:15:03 +0300
committerva-kuznecov <va-kuznecov@ydb.tech>2022-12-02 18:15:03 +0300
commit53ac07399132ee6ece67b9c94a3f57e63554a79a (patch)
tree15f111ef0c2ae4e8416a32279c9abee30dc96ffa
parentc7d11a207bb2dee4966556797bc40d3990899420 (diff)
downloadydb-53ac07399132ee6ece67b9c94a3f57e63554a79a.tar.gz
Discard persistent snapshot in SessionActor's Clenaup
-rw-r--r--ydb/core/kqp/session_actor/kqp_session_actor.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/ydb/core/kqp/session_actor/kqp_session_actor.cpp b/ydb/core/kqp/session_actor/kqp_session_actor.cpp
index e5e145ac272..4c5df0b9f5f 100644
--- a/ydb/core/kqp/session_actor/kqp_session_actor.cpp
+++ b/ydb/core/kqp/session_actor/kqp_session_actor.cpp
@@ -705,6 +705,12 @@ public:
QueryState->TxCtx->SnapshotHandle.ManagingActor = snapMgrActorId;
}
+ void DiscardPersistentSnapshot(const IKqpGateway::TKqpSnapshotHandle& handle) {
+ if (handle.ManagingActor) { // persistent snapshot was acquired
+ Send(handle.ManagingActor, new TEvKqpSnapshot::TEvDiscardSnapshot(handle.Snapshot));
+ }
+ }
+
void AcquireMvccSnapshot() {
LOG_D("acquire mvcc snapshot");
auto timeout = QueryState->QueryDeadlines.TimeoutAt - TAppData::TimeProvider->Now();
@@ -1883,8 +1889,12 @@ public:
void Cleanup(bool isFinal = false) {
isFinal = isFinal || QueryState && !QueryState->KeepSession;
- if (QueryState && QueryState->TxCtx && QueryState->TxCtx->IsInvalidated()) {
- InvalidateExplicitTransaction(QueryState->TxCtx, QueryState->TxId);
+ if (QueryState && QueryState->TxCtx) {
+ auto& txCtx = QueryState->TxCtx;
+ if (txCtx->IsInvalidated()) {
+ InvalidateExplicitTransaction(QueryState->TxCtx, QueryState->TxId);
+ }
+ DiscardPersistentSnapshot(txCtx->SnapshotHandle);
}
if (isFinal)