diff options
author | va-kuznecov <va-kuznecov@ydb.tech> | 2022-12-02 18:15:03 +0300 |
---|---|---|
committer | va-kuznecov <va-kuznecov@ydb.tech> | 2022-12-02 18:15:03 +0300 |
commit | 53ac07399132ee6ece67b9c94a3f57e63554a79a (patch) | |
tree | 15f111ef0c2ae4e8416a32279c9abee30dc96ffa | |
parent | c7d11a207bb2dee4966556797bc40d3990899420 (diff) | |
download | ydb-53ac07399132ee6ece67b9c94a3f57e63554a79a.tar.gz |
Discard persistent snapshot in SessionActor's Clenaup
-rw-r--r-- | ydb/core/kqp/session_actor/kqp_session_actor.cpp | 14 |
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) |