aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorilnaz <ilnaz@ydb.tech>2023-02-13 11:43:31 +0300
committerilnaz <ilnaz@ydb.tech>2023-02-13 11:43:31 +0300
commitc906f2aa4677e77f0a08542f044177d01f3f1c2a (patch)
tree5fc21bf944116a9638c4d0d12b5d31571c05956e
parentcf46221fda88961656f0dcf1f05e22b719cafd11 (diff)
downloadydb-c906f2aa4677e77f0a08542f044177d01f3f1c2a.tar.gz
(refactoring) Common TDeleteParts
-rw-r--r--ydb/core/tx/schemeshard/schemeshard__operation_common.h92
-rw-r--r--ydb/core/tx/schemeshard/schemeshard__operation_drop_bsv.cpp38
-rw-r--r--ydb/core/tx/schemeshard/schemeshard__operation_drop_extsubdomain.cpp34
-rw-r--r--ydb/core/tx/schemeshard/schemeshard__operation_drop_fs.cpp40
-rw-r--r--ydb/core/tx/schemeshard/schemeshard__operation_drop_kesus.cpp38
-rw-r--r--ydb/core/tx/schemeshard/schemeshard__operation_drop_pq.cpp40
-rw-r--r--ydb/core/tx/schemeshard/schemeshard__operation_drop_replication.cpp36
-rw-r--r--ydb/core/tx/schemeshard/schemeshard__operation_drop_solomon.cpp37
-rw-r--r--ydb/core/tx/schemeshard/schemeshard__operation_drop_subdomain.cpp37
-rw-r--r--ydb/core/tx/schemeshard/schemeshard__operation_drop_unsafe.cpp33
10 files changed, 99 insertions, 326 deletions
diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_common.h b/ydb/core/tx/schemeshard/schemeshard__operation_common.h
index 69e639b9435..9ea35987a4a 100644
--- a/ydb/core/tx/schemeshard/schemeshard__operation_common.h
+++ b/ydb/core/tx/schemeshard/schemeshard__operation_common.h
@@ -132,17 +132,15 @@ public:
} // namespace NTableState
class TCreateParts: public TSubOperationState {
-private:
- TOperationId OperationId;
+ const TOperationId OperationId;
TString DebugHint() const override {
- return TStringBuilder()
- << "TCreateParts"
- << " operationId: " << OperationId;
+ return TStringBuilder() << "TCreateParts"
+ << " opId# " << OperationId;
}
public:
- TCreateParts(TOperationId id)
+ explicit TCreateParts(const TOperationId& id)
: OperationId(id)
{
IgnoreMessages(DebugHint(), {});
@@ -416,39 +414,91 @@ public:
}
};
+class TDeleteParts: public TSubOperationState {
+protected:
+ const TOperationId OperationId;
+ const TTxState::ETxState NextState;
+
+ TString DebugHint() const override {
+ return TStringBuilder() << "TDeleteParts"
+ << " opId# " << OperationId << " ";
+ }
+
+ void DeleteShards(TOperationContext& context) {
+ const auto* txState = context.SS->FindTx(OperationId);
+
+ // Initiate asynchronous deletion of all shards
+ for (const auto& shard : txState->Shards) {
+ context.OnComplete.DeleteShard(shard.Idx);
+ }
+ }
+
+public:
+ explicit TDeleteParts(const TOperationId& id, TTxState::ETxState nextState = TTxState::Propose)
+ : OperationId(id)
+ , NextState(nextState)
+ {
+ IgnoreMessages(DebugHint(), {});
+ }
+
+ bool ProgressState(TOperationContext& context) override {
+ LOG_INFO_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD,
+ "[" << context.SS->TabletID() << "] " << DebugHint() << "ProgressState");
+ DeleteShards(context);
+
+ NIceDb::TNiceDb db(context.GetDB());
+ context.SS->ChangeTxState(db, OperationId, NextState);
+ return true;
+ }
+};
+
+class TDeletePartsAndDone: public TDeleteParts {
+public:
+ explicit TDeletePartsAndDone(const TOperationId& id)
+ : TDeleteParts(id)
+ {
+ Y_UNUSED(NextState);
+ }
+
+ bool ProgressState(TOperationContext& context) override {
+ LOG_INFO_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD,
+ "[" << context.SS->TabletID() << "] " << DebugHint() << "ProgressState");
+ DeleteShards(context);
+
+ context.OnComplete.DoneOperation(OperationId);
+ return true;
+ }
+};
+
class TDone: public TSubOperationState {
protected:
- TOperationId OperationId;
+ const TOperationId OperationId;
TString DebugHint() const override {
- return TStringBuilder()
- << "TDone operationId#" << OperationId;
+ return TStringBuilder() << "TDone"
+ << " opId# " << OperationId;
}
public:
- TDone(TOperationId id)
+ explicit TDone(const TOperationId& id)
: OperationId(id)
{
IgnoreMessages(DebugHint(), AllIncomingEvents());
}
bool ProgressState(TOperationContext& context) override {
- TTabletId ssId = context.SS->SelfTabletId();
-
LOG_INFO_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD,
- DebugHint() << " ProgressState"
- << ", at schemeshard" << ssId);
+ "[" << context.SS->TabletID() << "] " << DebugHint() << "ProgressState");
- TTxState* txState = context.SS->FindTx(OperationId);
+ const auto* txState = context.SS->FindTx(OperationId);
- TPathId pathId = txState->TargetPathId;
+ const auto& pathId = txState->TargetPathId;
Y_VERIFY(context.SS->PathsById.contains(pathId));
TPathElement::TPtr path = context.SS->PathsById.at(pathId);
- Y_VERIFY_S(path->PathState != TPathElement::EPathState::EPathStateNoChanges,
- "with context"
- << ", PathState: " << NKikimrSchemeOp::EPathState_Name(path->PathState)
- << ", PathId: " << path->PathId
- << ", PathName: " << path->Name);
+ Y_VERIFY_S(path->PathState != TPathElement::EPathState::EPathStateNoChanges, "with context"
+ << ", PathState: " << NKikimrSchemeOp::EPathState_Name(path->PathState)
+ << ", PathId: " << path->PathId
+ << ", PathName: " << path->Name);
if (path->IsPQGroup() && txState->IsCreate()) {
TPathElement::TPtr parentDir = context.SS->PathsById.at(path->ParentPathId);
diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_drop_bsv.cpp b/ydb/core/tx/schemeshard/schemeshard__operation_drop_bsv.cpp
index e6fdf799068..7af2e704f99 100644
--- a/ydb/core/tx/schemeshard/schemeshard__operation_drop_bsv.cpp
+++ b/ydb/core/tx/schemeshard/schemeshard__operation_drop_bsv.cpp
@@ -9,44 +9,6 @@ namespace {
using namespace NKikimr;
using namespace NSchemeShard;
-class TDeleteParts: public TSubOperationState {
-private:
- TOperationId OperationId;
-
- TString DebugHint() const override {
- return TStringBuilder()
- << "TDropBlockStoreVolume TDeleteParts"
- << ", operationId: " << OperationId;
- }
-
-public:
- TDeleteParts(TOperationId id)
- : OperationId(id)
- {
- IgnoreMessages(DebugHint(), {});
- }
-
- bool ProgressState(TOperationContext& context) override {
- TTabletId ssId = context.SS->SelfTabletId();
-
- LOG_INFO_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD,
- DebugHint() << " ProgressState"
- << ", at schemeshard: " << ssId);
-
- TTxState* txState = context.SS->FindTx(OperationId);
- Y_VERIFY(txState->TxType == TTxState::TxDropBlockStoreVolume);
-
- // Initiate asynchronous deletion of all shards
- for (auto shard : txState->Shards) {
- context.OnComplete.DeleteShard(shard.Idx);
- }
-
- NIceDb::TNiceDb db(context.GetDB());
- context.SS->ChangeTxState(db, OperationId, TTxState::Propose);
- return true;
- }
-};
-
class TPropose: public TSubOperationState {
private:
TOperationId OperationId;
diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_drop_extsubdomain.cpp b/ydb/core/tx/schemeshard/schemeshard__operation_drop_extsubdomain.cpp
index 6f149786ec7..b600e49bb61 100644
--- a/ydb/core/tx/schemeshard/schemeshard__operation_drop_extsubdomain.cpp
+++ b/ydb/core/tx/schemeshard/schemeshard__operation_drop_extsubdomain.cpp
@@ -9,41 +9,13 @@ namespace {
using namespace NKikimr;
using namespace NSchemeShard;
-class TDeletePrivateShards: public TSubOperationState {
-private:
- TOperationId OperationId;
-
- TString DebugHint() const override {
- return TStringBuilder()
- << "TDropExtSubdomain TDeletePrivateShards"
- << ", operationId: " << OperationId;
- }
-
+class TDeletePrivateShards: public TDeleteParts {
public:
- TDeletePrivateShards(TOperationId id)
- : OperationId(id)
+ explicit TDeletePrivateShards(const TOperationId& id)
+ : TDeleteParts(id, TTxState::Done)
{
IgnoreMessages(DebugHint(), AllIncomingEvents());
}
-
- bool ProgressState(TOperationContext& context) override {
- TTabletId ssId = context.SS->SelfTabletId();
-
- LOG_INFO_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD,
- DebugHint() << " ProgressState"
- << ", at schemeshard: " << ssId);
-
- TTxState* txState = context.SS->FindTx(OperationId);
-
- // Initiate asynchronous deletion of all shards
- for (auto shard : txState->Shards) {
- context.OnComplete.DeleteShard(shard.Idx);
- }
-
- NIceDb::TNiceDb db(context.GetDB());
- context.SS->ChangeTxState(db, OperationId, TTxState::Done);
- return true;
- }
};
class TDeleteExternalShards: public TSubOperationState {
diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_drop_fs.cpp b/ydb/core/tx/schemeshard/schemeshard__operation_drop_fs.cpp
index 355725f3261..29af89fcfa2 100644
--- a/ydb/core/tx/schemeshard/schemeshard__operation_drop_fs.cpp
+++ b/ydb/core/tx/schemeshard/schemeshard__operation_drop_fs.cpp
@@ -12,46 +12,6 @@ using namespace NSchemeShard;
////////////////////////////////////////////////////////////////////////////////
-class TDeleteParts: public TSubOperationState {
-private:
- const TOperationId OperationId;
-
- TString DebugHint() const override {
- return TStringBuilder()
- << "TDropFileStore::TDeleteParts"
- << ", operationId: " << OperationId;
- }
-
-public:
- TDeleteParts(TOperationId id)
- : OperationId(id)
- {
- IgnoreMessages(DebugHint(), {});
- }
-
- bool ProgressState(TOperationContext& context) override {
- TTabletId ssId = context.SS->SelfTabletId();
-
- LOG_INFO_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD,
- DebugHint() << " ProgressState"
- << ", at schemeshard: " << ssId);
-
- auto* txState = context.SS->FindTx(OperationId);
- Y_VERIFY(txState->TxType == TTxState::TxDropFileStore);
-
- // Initiate asynchronous deletion of all shards
- for (const auto& shard: txState->Shards) {
- context.OnComplete.DeleteShard(shard.Idx);
- }
-
- NIceDb::TNiceDb db(context.GetDB());
- context.SS->ChangeTxState(db, OperationId, TTxState::Propose);
- return true;
- }
-};
-
-////////////////////////////////////////////////////////////////////////////////
-
class TPropose: public TSubOperationState {
private:
const TOperationId OperationId;
diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_drop_kesus.cpp b/ydb/core/tx/schemeshard/schemeshard__operation_drop_kesus.cpp
index e4f6f303172..2e753ecf42b 100644
--- a/ydb/core/tx/schemeshard/schemeshard__operation_drop_kesus.cpp
+++ b/ydb/core/tx/schemeshard/schemeshard__operation_drop_kesus.cpp
@@ -9,44 +9,6 @@ namespace {
using namespace NKikimr;
using namespace NSchemeShard;
-class TDeleteParts: public TSubOperationState {
-private:
- TOperationId OperationId;
-
- TString DebugHint() const override {
- return TStringBuilder()
- << "TDropKesus TDeleteParts"
- << ", operationId: " << OperationId;
- }
-
-public:
- TDeleteParts(TOperationId id)
- : OperationId(id)
- {
- IgnoreMessages(DebugHint(), {});
- }
-
- bool ProgressState(TOperationContext& context) override {
- TTabletId ssId = context.SS->SelfTabletId();
-
- LOG_INFO_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD,
- DebugHint() << " ProgressState"
- << ", at schemeshard: " << ssId);
-
- TTxState* txState = context.SS->FindTx(OperationId);
- Y_VERIFY(txState->TxType == TTxState::TxDropKesus);
-
- // Initiate asynchronous deletion of all shards
- for (auto shard : txState->Shards) {
- context.OnComplete.DeleteShard(shard.Idx);
- }
-
- NIceDb::TNiceDb db(context.GetDB());
- context.SS->ChangeTxState(db, OperationId, TTxState::Propose);
- return true;
- }
-};
-
class TPropose: public TSubOperationState {
private:
TOperationId OperationId;
diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_drop_pq.cpp b/ydb/core/tx/schemeshard/schemeshard__operation_drop_pq.cpp
index 42cbaa77cf7..766fac5b249 100644
--- a/ydb/core/tx/schemeshard/schemeshard__operation_drop_pq.cpp
+++ b/ydb/core/tx/schemeshard/schemeshard__operation_drop_pq.cpp
@@ -118,43 +118,15 @@ public:
}
};
-class TDeleteParts: public TSubOperationState {
-private:
- TOperationId OperationId;
-
- TString DebugHint() const override {
- return TStringBuilder()
- << "TDropPQ TProposedDeletePart"
- << ", operationId: " << OperationId;
- }
-
+class TDeleteParts: public ::NKikimr::NSchemeShard::TDeleteParts {
public:
- TDeleteParts(TOperationId id)
- : OperationId(id)
+ explicit TDeleteParts(const TOperationId& id)
+ : ::NKikimr::NSchemeShard::TDeleteParts(id)
{
- IgnoreMessages(DebugHint(), {TEvPersQueue::TEvDropTabletReply::EventType});
- }
-
- bool ProgressState(TOperationContext& context) override {
- auto ssId = context.SS->SelfTabletId();
-
- LOG_INFO_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD,
- DebugHint() << " ProgressState"
- << ", at schemeshard: " << ssId);
-
- TTxState* txState = context.SS->FindTx(OperationId);
-
- // Initiate asynchronous deletion of all shards
- for (auto shard : txState->Shards) {
- context.OnComplete.DeleteShard(shard.Idx);
- }
-
- NIceDb::TNiceDb db(context.GetDB());
- context.SS->ChangeTxState(db, OperationId, TTxState::Propose);
- context.OnComplete.ActivateTx(OperationId);
- return true;
+ IgnoreMessages(DebugHint(), {
+ TEvPersQueue::TEvDropTabletReply::EventType,
+ });
}
-
};
class TPropose: public TSubOperationState {
diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_drop_replication.cpp b/ydb/core/tx/schemeshard/schemeshard__operation_drop_replication.cpp
index aa085db4c3b..edb2254dd4b 100644
--- a/ydb/core/tx/schemeshard/schemeshard__operation_drop_replication.cpp
+++ b/ydb/core/tx/schemeshard/schemeshard__operation_drop_replication.cpp
@@ -105,44 +105,16 @@ private:
}; // TDropParts
-class TDeleteParts: public TSubOperationState {
- TString DebugHint() const override {
- return TStringBuilder()
- << "TDropReplication TDeleteParts"
- << " opId# " << OperationId << " ";
- }
-
+class TDeleteParts: public ::NKikimr::NSchemeShard::TDeleteParts {
public:
- explicit TDeleteParts(TOperationId id)
- : OperationId(id)
+ explicit TDeleteParts(const TOperationId& id)
+ : ::NKikimr::NSchemeShard::TDeleteParts(id)
{
IgnoreMessages(DebugHint(), {
NReplication::TEvController::TEvDropReplicationResult::EventType,
});
}
-
- bool ProgressState(TOperationContext& context) override {
- LOG_I(DebugHint() << "ProgressState");
-
- TTxState* txState = context.SS->FindTx(OperationId);
- Y_VERIFY(txState);
- Y_VERIFY(txState->TxType == TTxState::TxDropReplication);
-
- for (const auto& shard : txState->Shards) {
- context.OnComplete.DeleteShard(shard.Idx);
- }
-
- NIceDb::TNiceDb db(context.GetDB());
- context.SS->ChangeTxState(db, OperationId, TTxState::Propose);
- context.OnComplete.ActivateTx(OperationId);
-
- return true;
- }
-
-private:
- const TOperationId OperationId;
-
-}; // TDeleteParts
+};
class TPropose: public TSubOperationState {
TString DebugHint() const override {
diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_drop_solomon.cpp b/ydb/core/tx/schemeshard/schemeshard__operation_drop_solomon.cpp
index e5277373572..fe176bfc7fe 100644
--- a/ydb/core/tx/schemeshard/schemeshard__operation_drop_solomon.cpp
+++ b/ydb/core/tx/schemeshard/schemeshard__operation_drop_solomon.cpp
@@ -9,39 +9,14 @@ namespace {
using namespace NKikimr;
using namespace NSchemeShard;
-class TDeleteParts: public TSubOperationState {
-private:
- TOperationId OperationId;
-
- TString DebugHint() const override {
- return TStringBuilder()
- << "TDropSolomon TDeleteParts"
- << ", operationId: " << OperationId;
- }
-
+class TDeleteParts: public TDeletePartsAndDone {
public:
- TDeleteParts(TOperationId id)
- : OperationId(id)
+ explicit TDeleteParts(const TOperationId& id)
+ : TDeletePartsAndDone(id)
{
- IgnoreMessages(DebugHint(), {TEvPrivate::TEvOperationPlan::EventType});
- }
-
- bool ProgressState(TOperationContext& context) override {
- TTabletId ssId = context.SS->SelfTabletId();
-
- LOG_INFO_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD,
- DebugHint() << " ProgressState"
- << ", at schemeshard: " << ssId);
-
- TTxState* txState = context.SS->FindTx(OperationId);
-
- // Initiate asynchronous deletion of all shards
- for (auto shard : txState->Shards) {
- context.OnComplete.DeleteShard(shard.Idx);
- }
-
- context.OnComplete.DoneOperation(OperationId);
- return true;
+ IgnoreMessages(DebugHint(), {
+ TEvPrivate::TEvOperationPlan::EventType,
+ });
}
};
diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_drop_subdomain.cpp b/ydb/core/tx/schemeshard/schemeshard__operation_drop_subdomain.cpp
index 5e6a9149129..b698f843866 100644
--- a/ydb/core/tx/schemeshard/schemeshard__operation_drop_subdomain.cpp
+++ b/ydb/core/tx/schemeshard/schemeshard__operation_drop_subdomain.cpp
@@ -9,39 +9,14 @@ namespace {
using namespace NKikimr;
using namespace NSchemeShard;
-class TDeleteParts: public TSubOperationState {
-private:
- TOperationId OperationId;
-
- TString DebugHint() const override {
- return TStringBuilder()
- << "TDropSubdomain TDeleteParts"
- << " operationId#" << OperationId;
- }
-
+class TDeleteParts: public TDeletePartsAndDone {
public:
- TDeleteParts(TOperationId id)
- : OperationId(id)
+ explicit TDeleteParts(const TOperationId& id)
+ : TDeletePartsAndDone(id)
{
- IgnoreMessages(DebugHint(), {TEvPrivate::TEvOperationPlan::EventType});
- }
-
- bool ProgressState(TOperationContext& context) override {
- TTabletId ssId = context.SS->SelfTabletId();
-
- LOG_INFO_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD,
- DebugHint() << " ProgressState"
- << ", at schemeshard: " << ssId);
-
- TTxState* txState = context.SS->FindTx(OperationId);
-
- // Initiate asynchronous deletion of all shards
- for (auto shard : txState->Shards) {
- context.OnComplete.DeleteShard(shard.Idx);
- }
-
- context.OnComplete.DoneOperation(OperationId);
- return true;
+ IgnoreMessages(DebugHint(), {
+ TEvPrivate::TEvOperationPlan::EventType,
+ });
}
};
diff --git a/ydb/core/tx/schemeshard/schemeshard__operation_drop_unsafe.cpp b/ydb/core/tx/schemeshard/schemeshard__operation_drop_unsafe.cpp
index 8aba08a66e2..8a68e7a33f0 100644
--- a/ydb/core/tx/schemeshard/schemeshard__operation_drop_unsafe.cpp
+++ b/ydb/core/tx/schemeshard/schemeshard__operation_drop_unsafe.cpp
@@ -9,40 +9,13 @@ namespace {
using namespace NKikimr;
using namespace NSchemeShard;
-class TProposedDeletePart: public TSubOperationState {
-private:
- TOperationId OperationId;
-
- TString DebugHint() const override {
- return TStringBuilder()
- << "TDropForceUnsafe TProposedDeletePart"
- << ", operationId: " << OperationId;
- }
-
+class TProposedDeletePart: public TDeletePartsAndDone {
public:
- TProposedDeletePart(TOperationId id)
- : OperationId(id)
+ explicit TProposedDeletePart(const TOperationId& id)
+ : TDeletePartsAndDone(id)
{
IgnoreMessages(DebugHint(), AllIncomingEvents());
}
-
- bool ProgressState(TOperationContext& context) override {
- TTabletId ssId = context.SS->SelfTabletId();
-
- LOG_INFO_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD,
- DebugHint() << " ProgressState"
- << ", at schemeshard: " << ssId);
-
- TTxState* txState = context.SS->FindTx(OperationId);
-
- // Initiate asynchronous deletion of all shards
- for (auto shard : txState->Shards) {
- context.OnComplete.DeleteShard(shard.Idx);
- }
-
- context.OnComplete.DoneOperation(OperationId);
- return true;
- }
};
class TPropose: public TSubOperationState {