diff --git a/ydb/core/tx/columnshard/columnshard_impl.h b/ydb/core/tx/columnshard/columnshard_impl.h index 0b8d7c1c017c..879e9e80281f 100644 --- a/ydb/core/tx/columnshard/columnshard_impl.h +++ b/ydb/core/tx/columnshard/columnshard_impl.h @@ -336,6 +336,8 @@ class TColumnShard: public TActor, public NTabletFlatExecutor::TTa std::shared_ptr TabletActivityImpl = std::make_shared(0); public: + TAtomicCounter InitShardCounter; + ui64 BuildEphemeralTxId() { static TAtomicCounter Counter = 0; static constexpr ui64 shift = (ui64)1 << 47; diff --git a/ydb/core/tx/columnshard/transactions/operators/schema.cpp b/ydb/core/tx/columnshard/transactions/operators/schema.cpp index debb1a6b298b..03f310ad7110 100644 --- a/ydb/core/tx/columnshard/transactions/operators/schema.cpp +++ b/ydb/core/tx/columnshard/transactions/operators/schema.cpp @@ -54,6 +54,10 @@ TTxController::TProposeResult TSchemaTransactionOperator::DoStartProposeOnExecut switch (SchemaTxBody.TxBody_case()) { case NKikimrTxColumnShard::TSchemaTxBody::kInitShard: { + if (owner.InitShardCounter.Add(1) != 1) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "repeated_initialization")("tx_id", GetTxId())( + "counter", owner.InitShardCounter.Val()); + } auto validationStatus = ValidateTables(SchemaTxBody.GetInitShard().GetTables()); if (validationStatus.IsFail()) { return TProposeResult(NKikimrTxColumnShard::EResultStatus::SCHEMA_ERROR, "Invalid schema: " + validationStatus.GetErrorMessage()); diff --git a/ydb/core/tx/columnshard/transactions/operators/schema.h b/ydb/core/tx/columnshard/transactions/operators/schema.h index 8b7575cc3cc4..df0b8aedb076 100644 --- a/ydb/core/tx/columnshard/transactions/operators/schema.h +++ b/ydb/core/tx/columnshard/transactions/operators/schema.h @@ -24,7 +24,6 @@ class TSchemaTransactionOperator: public IProposeTxOperator, public TMonitoringO THashSet GetNotErasedTableIds(const TColumnShard& owner, const TInfoProto& tables) const { THashSet result; for (auto&& i : tables) { - AFL_VERIFY(!owner.TablesManager.HasTable(i.GetPathId())); if (owner.TablesManager.HasTable(i.GetPathId(), true)) { result.emplace(i.GetPathId()); }