Skip to content

Commit 220c1c6

Browse files
committed
fix
1 parent 9334977 commit 220c1c6

File tree

4 files changed

+21
-26
lines changed

4 files changed

+21
-26
lines changed

ydb/core/kqp/common/kqp_tx_manager.cpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -189,18 +189,16 @@ class TKqpTransactionManager : public IKqpTransactionManager {
189189
return !HasOlapTable();
190190
}
191191

192-
const std::optional<NKikimrDataEvents::TMvccSnapshot>& GetSnapshot() const override {
193-
return Snapshot;
192+
bool HasSnapshot() const override {
193+
return ValidSnapshot;
194194
}
195195

196-
void SetSnapshot(ui64 step, ui64 txId) override {
197-
Snapshot.emplace();
198-
Snapshot->SetStep(step);
199-
Snapshot->SetTxId(txId);
196+
void SetHasSnapshot(bool hasSnapshot) override {
197+
ValidSnapshot = hasSnapshot;
200198
}
201199

202200
bool BrokenLocks() const override {
203-
return LocksIssue.has_value() && !(GetSnapshot() && IsReadOnly());
201+
return LocksIssue.has_value() && !(HasSnapshot() && IsReadOnly());
204202
}
205203

206204
const std::optional<NYql::TIssue>& GetLockIssue() const override {
@@ -407,8 +405,8 @@ class TKqpTransactionManager : public IKqpTransactionManager {
407405
std::unordered_set<TString> TablePathes;
408406

409407
bool ReadOnly = true;
408+
bool ValidSnapshot = false;
410409
bool HasOlapTableShard = false;
411-
std::optional<NKikimrDataEvents::TMvccSnapshot> Snapshot;
412410
std::optional<NYql::TIssue> LocksIssue;
413411

414412
THashSet<ui64> SendingShards;

ydb/core/kqp/common/kqp_tx_manager.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ class IKqpTransactionManager {
6161

6262
virtual bool IsVolatile() const = 0;
6363

64-
virtual const std::optional<NKikimrDataEvents::TMvccSnapshot>& GetSnapshot() const = 0;
65-
virtual void SetSnapshot(ui64 step, ui64 txId) = 0;
64+
virtual bool HasSnapshot() const = 0;
65+
virtual void SetHasSnapshot(bool hasSnapshot) = 0;
6666

6767
virtual bool BrokenLocks() const = 0;
6868
virtual const std::optional<NYql::TIssue>& GetLockIssue() const = 0;

ydb/core/kqp/executer_actor/kqp_data_executer.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,10 @@ class TKqpDataExecuter : public TKqpExecuterBase<TKqpDataExecuter, EExecType::Da
282282
}
283283
}
284284

285+
if (TxManager) {
286+
TxManager->SetHasSnapshot(GetSnapshot().IsValid());
287+
}
288+
285289
if (!BufferActorId || (ReadOnlyTx && Request.LocksOp != ELocksOp::Rollback)) {
286290
Become(&TKqpDataExecuter::FinalizeState);
287291
MakeResponseAndPassAway();
@@ -2237,8 +2241,6 @@ class TKqpDataExecuter : public TKqpExecuterBase<TKqpDataExecuter, EExecType::Da
22372241
ExecuterStateSpan = NWilson::TSpan(TWilsonKqp::DataExecuterAcquireSnapshot, ExecuterSpan.GetTraceId(), "WaitForSnapshot");
22382242

22392243
return;
2240-
} else if (TxManager && GetSnapshot().IsValid()) {
2241-
TxManager->SetSnapshot(GetSnapshot().Step, GetSnapshot().TxId);
22422244
}
22432245

22442246
ContinueExecute();
@@ -2274,9 +2276,6 @@ class TKqpDataExecuter : public TKqpExecuterBase<TKqpDataExecuter, EExecType::Da
22742276

22752277
SetSnapshot(record.GetSnapshotStep(), record.GetSnapshotTxId());
22762278
ImmediateTx = true;
2277-
if (TxManager) {
2278-
TxManager->SetSnapshot(GetSnapshot().Step, GetSnapshot().TxId);
2279-
}
22802279

22812280
ContinueExecute();
22822281
}

ydb/core/kqp/runtime/kqp_write_actor.cpp

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ class TKqpTableWriteActor : public TActorBootstrapped<TKqpTableWriteActor> {
170170
const bool inconsistentTx,
171171
const NMiniKQL::TTypeEnvironment& typeEnv,
172172
std::shared_ptr<NKikimr::NMiniKQL::TScopedAlloc> alloc,
173-
const NKikimrDataEvents::TMvccSnapshot& mvccSnapshot,
173+
const std::optional<NKikimrDataEvents::TMvccSnapshot>& mvccSnapshot,
174174
const IKqpTransactionManagerPtr& txManager,
175175
const TActorId sessionActorId,
176176
TIntrusivePtr<TKqpCounters> counters,
@@ -815,7 +815,9 @@ class TKqpTableWriteActor : public TActorBootstrapped<TKqpTableWriteActor> {
815815
FillEvWritePrepare(evWrite.get(), shardId, *TxId, TxManager);
816816
} else if (!InconsistentTx) {
817817
evWrite->SetLockId(LockTxId, LockNodeId);
818-
*evWrite->Record.MutableMvccSnapshot() = MvccSnapshot;
818+
if (MvccSnapshot) {
819+
*evWrite->Record.MutableMvccSnapshot() = *MvccSnapshot;
820+
}
819821
}
820822

821823
const auto serializationResult = ShardedWriteController->SerializeMessageToPayload(shardId, *evWrite);
@@ -957,7 +959,7 @@ class TKqpTableWriteActor : public TActorBootstrapped<TKqpTableWriteActor> {
957959
const NMiniKQL::TTypeEnvironment& TypeEnv;
958960
std::shared_ptr<NKikimr::NMiniKQL::TScopedAlloc> Alloc;
959961

960-
NKikimrDataEvents::TMvccSnapshot MvccSnapshot;
962+
std::optional<NKikimrDataEvents::TMvccSnapshot> MvccSnapshot;
961963

962964
const TTableId TableId;
963965
const TString TablePath;
@@ -1024,7 +1026,9 @@ class TKqpDirectWriteActor : public TActorBootstrapped<TKqpDirectWriteActor>, pu
10241026
Settings.GetInconsistentTx(),
10251027
TypeEnv,
10261028
Alloc,
1027-
Settings.GetMvccSnapshot(),
1029+
Settings.GetIsOlap()
1030+
? std::optional<NKikimrDataEvents::TMvccSnapshot>{Settings.GetMvccSnapshot()}
1031+
: std::optional<NKikimrDataEvents::TMvccSnapshot>{},
10281032
nullptr,
10291033
TActorId{},
10301034
Counters,
@@ -1323,14 +1327,10 @@ class TKqpBufferWriteActor :public TActorBootstrapped<TKqpBufferWriteActor>, pub
13231327
AFL_ENSURE(LockTxId == settings.TransactionSettings.LockTxId);
13241328
AFL_ENSURE(LockNodeId == settings.TransactionSettings.LockNodeId);
13251329
AFL_ENSURE(InconsistentTx == settings.TransactionSettings.InconsistentTx);
1326-
AFL_ENSURE(MvccSnapshot.GetStep() == settings.TransactionSettings.MvccSnapshot.GetStep());
1327-
AFL_ENSURE(MvccSnapshot.GetTxId() == settings.TransactionSettings.MvccSnapshot.GetTxId());
13281330
} else {
13291331
LockTxId = settings.TransactionSettings.LockTxId;
13301332
LockNodeId = settings.TransactionSettings.LockNodeId;
13311333
InconsistentTx = settings.TransactionSettings.InconsistentTx;
1332-
MvccSnapshot.SetStep(settings.TransactionSettings.MvccSnapshot.GetStep());
1333-
MvccSnapshot.SetTxId(settings.TransactionSettings.MvccSnapshot.GetTxId());
13341334
}
13351335

13361336
auto& writeInfo = WriteInfos[settings.TableId];
@@ -1344,7 +1344,7 @@ class TKqpBufferWriteActor :public TActorBootstrapped<TKqpBufferWriteActor>, pub
13441344
InconsistentTx,
13451345
TypeEnv,
13461346
Alloc,
1347-
MvccSnapshot,
1347+
std::nullopt,
13481348
TxManager,
13491349
SessionActorId,
13501350
Counters,
@@ -2023,7 +2023,6 @@ class TKqpBufferWriteActor :public TActorBootstrapped<TKqpBufferWriteActor>, pub
20232023

20242024
std::shared_ptr<NKikimr::NMiniKQL::TScopedAlloc> Alloc;
20252025
NMiniKQL::TTypeEnvironment TypeEnv;
2026-
NKikimrDataEvents::TMvccSnapshot MvccSnapshot;
20272026

20282027
struct TWriteInfo {
20292028
TKqpTableWriteActor* WriteTableActor = nullptr;
@@ -2150,7 +2149,6 @@ class TKqpForwardWriteActor : public TActorBootstrapped<TKqpForwardWriteActor>,
21502149
.LockTxId = Settings.GetLockTxId(),
21512150
.LockNodeId = Settings.GetLockNodeId(),
21522151
.InconsistentTx = Settings.GetInconsistentTx(),
2153-
.MvccSnapshot = Settings.GetMvccSnapshot(),
21542152
},
21552153
.Priority = Settings.GetPriority(),
21562154
};

0 commit comments

Comments
 (0)