@@ -75,7 +75,7 @@ void TOperationsManager::CommitTransactionOnExecute(
7575 opPtr->CommitOnExecute (owner, txc, snapshot);
7676 commited.emplace_back (opPtr);
7777 }
78- OnTransactionFinishOnExecute (commited, txId, txc);
78+ OnTransactionFinishOnExecute (commited, lock, txId, txc);
7979}
8080
8181void TOperationsManager::CommitTransactionOnComplete (
@@ -101,7 +101,7 @@ void TOperationsManager::CommitTransactionOnComplete(
101101 opPtr->CommitOnComplete (owner, snapshot);
102102 commited.emplace_back (opPtr);
103103 }
104- OnTransactionFinishOnComplete (commited, txId);
104+ OnTransactionFinishOnComplete (commited, lock, txId);
105105}
106106
107107void TOperationsManager::AbortTransactionOnExecute (TColumnShard& owner, const ui64 txId, NTabletFlatExecutor::TTransactionContext& txc) {
@@ -118,7 +118,7 @@ void TOperationsManager::AbortTransactionOnExecute(TColumnShard& owner, const ui
118118 aborted.emplace_back (opPtr);
119119 }
120120
121- OnTransactionFinishOnExecute (aborted, txId, txc);
121+ OnTransactionFinishOnExecute (aborted, *lock, txId, txc);
122122}
123123
124124void TOperationsManager::AbortTransactionOnComplete (TColumnShard& owner, const ui64 txId) {
@@ -135,7 +135,7 @@ void TOperationsManager::AbortTransactionOnComplete(TColumnShard& owner, const u
135135 aborted.emplace_back (opPtr);
136136 }
137137
138- OnTransactionFinishOnComplete (aborted, txId);
138+ OnTransactionFinishOnComplete (aborted, *lock, txId);
139139}
140140
141141TWriteOperation::TPtr TOperationsManager::GetOperation (const TWriteId writeId) const {
@@ -147,24 +147,20 @@ TWriteOperation::TPtr TOperationsManager::GetOperation(const TWriteId writeId) c
147147}
148148
149149void TOperationsManager::OnTransactionFinishOnExecute (
150- const TVector<TWriteOperation::TPtr>& operations, const ui64 txId, NTabletFlatExecutor::TTransactionContext& txc) {
151- const ui64 lockId = GetLockForTxVerified (txId);
152- auto itLock = LockFeatures.find (lockId);
153- AFL_VERIFY (itLock != LockFeatures.end ());
150+ const TVector<TWriteOperation::TPtr>& operations, const TLockFeatures& lock, const ui64 txId, NTabletFlatExecutor::TTransactionContext& txc) {
154151 for (auto && op : operations) {
155152 RemoveOperationOnExecute (op, txc);
156153 }
157154 NIceDb::TNiceDb db (txc.DB );
158- db.Table <Schema::OperationTxIds>().Key (txId, lockId ).Delete ();
155+ db.Table <Schema::OperationTxIds>().Key (txId, lock. GetLockId () ).Delete ();
159156}
160157
161158void TOperationsManager::OnTransactionFinishOnComplete (
162- const TVector<TWriteOperation::TPtr>& operations, const ui64 txId) {
163- const ui64 lockId = GetLockForTxVerified (txId);
164- auto itLock = LockFeatures.find (lockId);
165- AFL_VERIFY (itLock != LockFeatures.end ());
166- itLock->second .RemoveInteractions (InteractionsContext);
167- LockFeatures.erase (lockId);
159+ const TVector<TWriteOperation::TPtr>& operations, const TLockFeatures& lock, const ui64 txId) {
160+ {
161+ lock.RemoveInteractions (InteractionsContext);
162+ LockFeatures.erase (lock.GetLockId ());
163+ }
168164 Tx2Lock.erase (txId);
169165 for (auto && op : operations) {
170166 RemoveOperationOnComplete (op);
@@ -233,6 +229,11 @@ EOperationBehaviour TOperationsManager::GetBehaviour(const NEvents::TDataEvents:
233229 return EOperationBehaviour::Undefined;
234230 }
235231
232+ if (!evWrite.Record .HasLockTxId () && !evWrite.Record .HasLockNodeId () &&
233+ evWrite.Record .GetTxMode () == NKikimrDataEvents::TEvWrite::MODE_IMMEDIATE) {
234+ return EOperationBehaviour::NoTxWrite;
235+ }
236+
236237 if (evWrite.Record .HasTxId () && evWrite.Record .GetTxMode () == NKikimrDataEvents::TEvWrite::MODE_PREPARE) {
237238 return EOperationBehaviour::InTxWrite;
238239 }
0 commit comments