Skip to content

Commit 5d59f2c

Browse files
authored
EOperationKind::WriteTx (#976)
1 parent ceb1340 commit 5d59f2c

File tree

5 files changed

+9
-11
lines changed

5 files changed

+9
-11
lines changed

ydb/core/tx/datashard/check_write_unit.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ EExecutionStatus TCheckWriteUnit::Execute(TOperation::TPtr op,
4141
TTransactionContext &,
4242
const TActorContext &ctx)
4343
{
44-
Y_ABORT_UNLESS(op->IsDataTx() || op->IsReadTable());
4544
Y_ABORT_UNLESS(!op->IsAborted());
4645

4746
if (CheckRejectDataTx(op, ctx)) {
@@ -50,8 +49,7 @@ EExecutionStatus TCheckWriteUnit::Execute(TOperation::TPtr op,
5049
return EExecutionStatus::Executed;
5150
}
5251

53-
TWriteOperation* writeOp = dynamic_cast<TWriteOperation*>(op.Get());
54-
Y_VERIFY_S(writeOp, "cannot cast operation of kind " << op->GetKind());
52+
TWriteOperation* writeOp = TWriteOperation::CastWriteOperation(op);
5553
auto writeTx = writeOp->GetWriteTx();
5654
Y_ABORT_UNLESS(writeTx);
5755
Y_ABORT_UNLESS(writeTx->Ready() || writeTx->RequirePrepare());

ydb/core/tx/datashard/datashard_pipeline.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1563,7 +1563,7 @@ TOperation::TPtr TPipeline::BuildOperation(NEvents::TDataEvents::TEvWrite::TPtr&
15631563
const TActorContext& ctx, NWilson::TSpan &&operationSpan)
15641564
{
15651565
const auto& rec = ev->Get()->Record;
1566-
TBasicOpInfo info(rec.GetTxId(), EOperationKind::DataTx, EvWrite::Convertor::GetProposeFlags(rec.GetTxMode()), 0, receivedAt, tieBreakerIndex);
1566+
TBasicOpInfo info(rec.GetTxId(), EOperationKind::WriteTx, EvWrite::Convertor::GetProposeFlags(rec.GetTxMode()), 0, receivedAt, tieBreakerIndex);
15671567
auto writeOp = MakeIntrusive<TWriteOperation>(info, ev, Self, txc, ctx);
15681568
writeOp->OperationSpan = std::move(operationSpan);
15691569
auto writeTx = writeOp->GetWriteTx();

ydb/core/tx/datashard/datashard_write_operation.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ void TValidatedWriteTx::ComputeTxSize() {
245245

246246
TWriteOperation* TWriteOperation::CastWriteOperation(TOperation::TPtr op)
247247
{
248+
Y_ABORT_UNLESS(op->IsWriteTx());
248249
TWriteOperation* writeOp = dynamic_cast<TWriteOperation*>(op.Get());
249250
Y_ABORT_UNLESS(writeOp);
250251
return writeOp;
@@ -453,7 +454,7 @@ ERestoreDataStatus TWriteOperation::RestoreTxData(
453454

454455
void TWriteOperation::FinalizeWriteTxPlan()
455456
{
456-
Y_ABORT_UNLESS(IsDataTx());
457+
Y_ABORT_UNLESS(IsWriteTx());
457458
Y_ABORT_UNLESS(!IsImmediate());
458459
Y_ABORT_UNLESS(!IsKqpScanTransaction());
459460

@@ -494,8 +495,7 @@ class TFinalizeWriteTxPlanUnit: public TExecutionUnit {
494495
Y_UNUSED(txc);
495496
Y_UNUSED(ctx);
496497

497-
TWriteOperation* writeOp = dynamic_cast<TWriteOperation*>(op.Get());
498-
Y_VERIFY_S(writeOp, "cannot cast operation of kind " << op->GetKind());
498+
TWriteOperation* writeOp = TWriteOperation::CastWriteOperation(op);
499499

500500
writeOp->FinalizeWriteTxPlan();
501501

ydb/core/tx/datashard/operation.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ enum class EOperationKind : ui32 {
111111
// Values [100, inf) are used for internal kinds.
112112
DirectTx = 101,
113113
ReadTx = 102,
114+
WriteTx = 103,
114115
};
115116

116117
class TBasicOpInfo {
@@ -165,6 +166,7 @@ class TBasicOpInfo {
165166

166167
bool IsDataTx() const { return Kind == EOperationKind::DataTx; }
167168
bool IsReadTx() const { return Kind == EOperationKind::ReadTx; }
169+
bool IsWriteTx() const { return Kind == EOperationKind::WriteTx; }
168170
bool IsDirectTx() const { return Kind == EOperationKind::DirectTx; }
169171
bool IsSchemeTx() const { return Kind == EOperationKind::SchemeTx; }
170172
bool IsReadTable() const { return Kind == EOperationKind::ReadTable; }

ydb/core/tx/datashard/write_unit.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,7 @@ class TWriteUnit : public TExecutionUnit {
9898
}
9999

100100
EExecutionStatus Execute(TOperation::TPtr op, TTransactionContext& txc, const TActorContext& ctx) override {
101-
TWriteOperation* writeOp = dynamic_cast<TWriteOperation*>(op.Get());
102-
Y_ABORT_UNLESS(writeOp != nullptr);
101+
TWriteOperation* writeOp = TWriteOperation::CastWriteOperation(op);
103102

104103
LOG_DEBUG_S(ctx, NKikimrServices::TX_DATASHARD, "Executing write operation for " << *op << " at " << DataShard.TabletID());
105104

@@ -164,8 +163,7 @@ class TWriteUnit : public TExecutionUnit {
164163
DataShard.EnqueueChangeRecords(std::move(op->ChangeRecords()));
165164
DataShard.EmitHeartbeats(ctx);
166165

167-
TWriteOperation* writeOp = dynamic_cast<TWriteOperation*>(op.Get());
168-
Y_ABORT_UNLESS(writeOp != nullptr);
166+
TWriteOperation* writeOp = TWriteOperation::CastWriteOperation(op);
169167

170168
const auto& status = writeOp->GetWriteResult()->Record.status();
171169
LOG_DEBUG_S(ctx, NKikimrServices::TX_DATASHARD, "Completed write operation for " << *op << " at " << DataShard.TabletID() << ", status " << status);

0 commit comments

Comments
 (0)