Skip to content

Commit bc1d771

Browse files
fixes for avoid incorrect txoperator usage on compile phase after update
1 parent 1c91306 commit bc1d771

File tree

5 files changed

+18
-15
lines changed

5 files changed

+18
-15
lines changed

ydb/core/tx/columnshard/blobs_action/transaction/tx_write.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,9 @@ bool TTxWrite::Execute(TTransactionContext& txc, const TActorContext&) {
8888
proto.SetLockId(operation->GetLockId());
8989
TString txBody;
9090
Y_ABORT_UNLESS(proto.SerializeToString(&txBody));
91-
auto op = Self->GetProgressTxController().StartProposeOnExecute(TTxController::TBasicTxInfo(NKikimrTxColumnShard::TX_KIND_COMMIT_WRITE, operation->GetLockId()),
92-
txBody, writeMeta.GetSource(), operation->GetCookie(), {}, txc);
91+
auto op = Self->GetProgressTxController().StartProposeOnExecute(
92+
TTxController::TTxInfo(NKikimrTxColumnShard::TX_KIND_COMMIT_WRITE, operation->GetLockId(), writeMeta.GetSource(), operation->GetCookie(), {}), txBody,
93+
txc);
9394
AFL_VERIFY(!op->IsFail());
9495
ResultOperators.emplace_back(op);
9596
} else {

ydb/core/tx/columnshard/columnshard__propose_transaction.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ using namespace NTabletFlatExecutor;
1111
class TTxProposeTransaction : public NTabletFlatExecutor::TTransactionBase<TColumnShard> {
1212
private:
1313
using TBase = NTabletFlatExecutor::TTransactionBase<TColumnShard>;
14+
std::optional<TTxController::TTxInfo> TxInfo;
15+
1416
public:
1517
TTxProposeTransaction(TColumnShard* self, TEvColumnShard::TEvProposeTransaction::TPtr& ev)
1618
: TBase(self)
@@ -57,7 +59,8 @@ class TTxProposeTransaction : public NTabletFlatExecutor::TTransactionBase<TColu
5759
seqNo.DeserializeFromProto(Ev->Get()->Record.GetSeqNo()).Validate();
5860
msgSeqNo = seqNo;
5961
}
60-
TxOperator = Self->GetProgressTxController().StartProposeOnExecute(TTxController::TBasicTxInfo(txKind, txId), txBody, Ev->Get()->GetSource(), Ev->Cookie, msgSeqNo, txc);
62+
TxInfo.emplace(txKind, txId, Ev->Get()->GetSource(), Ev->Cookie, msgSeqNo);
63+
TxOperator = Self->GetProgressTxController().StartProposeOnExecute(*TxInfo, txBody, txc);
6164
return true;
6265
}
6366

@@ -67,12 +70,13 @@ class TTxProposeTransaction : public NTabletFlatExecutor::TTransactionBase<TColu
6770
return;
6871
}
6972
AFL_VERIFY(!!TxOperator);
73+
AFL_VERIFY(!!TxInfo);
7074
const ui64 txId = record.GetTxId();
7175
NActors::TLogContextGuard lGuard = NActors::TLogContextBuilder::Build()("tablet_id", Self->TabletID())("tx_id", txId)("this", (ui64)this);
7276
if (TxOperator->IsFail()) {
7377
TxOperator->SendReply(*Self, ctx);
7478
} else {
75-
if (!Self->GetProgressTxController().IsActualOperator(TxOperator)) {
79+
if (!(*TxInfo == TxOperator->GetTxInfo())) {
7680
return;
7781
}
7882
if (TxOperator->IsAsync()) {

ydb/core/tx/columnshard/columnshard__write.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ bool TProposeWriteTransaction::Execute(TTransactionContext& txc, const TActorCon
283283
TString txBody;
284284
Y_ABORT_UNLESS(proto.SerializeToString(&txBody));
285285
Y_UNUSED(Self->GetProgressTxController().StartProposeOnExecute(
286-
TTxController::TBasicTxInfo(NKikimrTxColumnShard::TX_KIND_COMMIT_WRITE, WriteCommit->GetTxId()), txBody, Source, Cookie, {}, txc));
286+
TTxController::TTxInfo(NKikimrTxColumnShard::TX_KIND_COMMIT_WRITE, WriteCommit->GetTxId(), Source, Cookie, {}), txBody, txc));
287287
return true;
288288
}
289289

ydb/core/tx/columnshard/transactions/tx_controller.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -285,12 +285,10 @@ void TTxController::OnTabletInit() {
285285
}
286286
}
287287

288-
std::shared_ptr<TTxController::ITransactionOperator> TTxController::StartProposeOnExecute(const TTxController::TBasicTxInfo& txInfo, const TString& txBody, const TActorId source, const ui64 cookie,
289-
const std::optional<TMessageSeqNo>& seqNo, NTabletFlatExecutor::TTransactionContext& txc) {
288+
std::shared_ptr<TTxController::ITransactionOperator> TTxController::StartProposeOnExecute(const TTxController::TTxInfo& txInfo, const TString& txBody, NTabletFlatExecutor::TTransactionContext& txc) {
290289
NActors::TLogContextGuard lGuard = NActors::TLogContextBuilder::Build()("method", "TTxController::StartProposeOnExecute")("tx_info", txInfo.DebugString());
291290
AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD)("event", "start");
292-
std::shared_ptr<TTxController::ITransactionOperator> txOperator(TTxController::ITransactionOperator::TFactory::Construct(txInfo.TxKind,
293-
TTxController::TTxInfo(txInfo.TxKind, txInfo.TxId, source, cookie, seqNo)));
291+
std::shared_ptr<TTxController::ITransactionOperator> txOperator(TTxController::ITransactionOperator::TFactory::Construct(txInfo.TxKind, txInfo));
294292
AFL_VERIFY(!!txOperator);
295293
if (!txOperator->Parse(Owner, txBody)) {
296294
AFL_ERROR(NKikimrServices::TX_COLUMNSHARD)("error", "cannot parse txOperator");

ydb/core/tx/columnshard/transactions/tx_controller.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ struct TBasicTxInfo {
2020
, TxId(txId) {
2121
}
2222

23+
bool operator==(const TBasicTxInfo& item) const = default;
24+
2325
ui64 GetTxId() const {
2426
return TxId;
2527
}
@@ -37,6 +39,8 @@ struct TFullTxInfo: public TBasicTxInfo {
3739
ui64 Cookie = 0;
3840
std::optional<TMessageSeqNo> SeqNo;
3941
public:
42+
bool operator==(const TFullTxInfo& item) const = default;
43+
4044
TString SerializeSeqNoAsString() const {
4145
if (!SeqNo) {
4246
return "";
@@ -332,16 +336,12 @@ class TTxController {
332336
ui64 GetMemoryUsage() const;
333337
bool HaveOutdatedTxs() const;
334338

335-
bool IsActualOperator(const std::shared_ptr<TTxController::ITransactionOperator>& op) const {
336-
auto opActual = GetTxOperator(op->GetTxId());
337-
return !!opActual && (ui64)opActual.get() == (ui64)op.get();
338-
}
339-
340339
bool Load(NTabletFlatExecutor::TTransactionContext& txc);
341340

342341
[[nodiscard]] std::shared_ptr<TTxController::ITransactionOperator> UpdateTxSourceInfo(const TFullTxInfo& tx, NTabletFlatExecutor::TTransactionContext& txc);
343342

344-
[[nodiscard]] std::shared_ptr<TTxController::ITransactionOperator> StartProposeOnExecute(const TBasicTxInfo& txInfo, const TString& txBody, const TActorId source, const ui64 cookie, const std::optional<TMessageSeqNo>& seqNo, NTabletFlatExecutor::TTransactionContext& txc);
343+
[[nodiscard]] std::shared_ptr<TTxController::ITransactionOperator> StartProposeOnExecute(
344+
const TTxController::TTxInfo& txInfo, const TString& txBody, NTabletFlatExecutor::TTransactionContext& txc);
345345
void StartProposeOnComplete(const ui64 txId, const TActorContext& ctx);
346346

347347
void FinishProposeOnExecute(const ui64 txId, NTabletFlatExecutor::TTransactionContext& txc);

0 commit comments

Comments
 (0)