From fd269ead3fcbcb11abe94abd6be6050c8aebb7de Mon Sep 17 00:00:00 2001 From: ivanmorozov333 Date: Wed, 17 Apr 2024 15:07:10 +0300 Subject: [PATCH] additional info on abort --- .../tx/columnshard/blobs_action/transaction/tx_draft.h | 2 +- .../blobs_action/transaction/tx_write_index.cpp | 4 ++-- .../columnshard/engines/changes/abstract/abstract.cpp | 10 +++++----- .../tx/columnshard/engines/changes/abstract/abstract.h | 2 +- ydb/core/tx/columnshard/engines/ut/ut_logs_engine.cpp | 8 ++++---- .../engines/writer/compacted_blob_constructor.cpp | 8 +++++--- .../engines/writer/compacted_blob_constructor.h | 2 +- .../tx/columnshard/engines/writer/write_controller.h | 7 ++++--- ydb/core/tx/columnshard/write_actor.cpp | 2 +- 9 files changed, 24 insertions(+), 21 deletions(-) diff --git a/ydb/core/tx/columnshard/blobs_action/transaction/tx_draft.h b/ydb/core/tx/columnshard/blobs_action/transaction/tx_draft.h index 029ad5f04fcb..1bd9762d7917 100644 --- a/ydb/core/tx/columnshard/blobs_action/transaction/tx_draft.h +++ b/ydb/core/tx/columnshard/blobs_action/transaction/tx_draft.h @@ -12,7 +12,7 @@ class TTxWriteDraft: public TTransactionBase { public: ~TTxWriteDraft() { if (!Completed) { - WriteController->Abort(); + WriteController->Abort("TTxWriteDraft aborted before complete"); } } diff --git a/ydb/core/tx/columnshard/blobs_action/transaction/tx_write_index.cpp b/ydb/core/tx/columnshard/blobs_action/transaction/tx_write_index.cpp index 750ffefa239e..ec74bfb196e2 100644 --- a/ydb/core/tx/columnshard/blobs_action/transaction/tx_write_index.cpp +++ b/ydb/core/tx/columnshard/blobs_action/transaction/tx_write_index.cpp @@ -38,7 +38,7 @@ bool TTxWriteIndex::Execute(TTransactionContext& txc, const TActorContext& ctx) auto& portion = changes->GetWritePortionInfo(i)->GetPortionResult(); LOG_S_WARN(TxPrefix() << "(" << changes->TypeString() << ":" << portion.DebugString() << ") blob cannot apply changes: " << TxSuffix()); } - NOlap::TChangesFinishContext context("cannot write index blobs"); + NOlap::TChangesFinishContext context("cannot write index blobs: " + ::ToString(Ev->Get()->GetPutStatus())); changes->Abort(*Self, context); LOG_S_ERROR(TxPrefix() << " (" << changes->TypeString() << ") cannot write index blobs" << TxSuffix()); } @@ -71,7 +71,7 @@ TTxWriteIndex::~TTxWriteIndex() { if (Ev) { auto changes = Ev->Get()->IndexChanges; if (!CompleteReady && changes) { - changes->AbortEmergency(); + changes->AbortEmergency("TTxWriteIndex destructor withno CompleteReady flag"); } } } diff --git a/ydb/core/tx/columnshard/engines/changes/abstract/abstract.cpp b/ydb/core/tx/columnshard/engines/changes/abstract/abstract.cpp index c3496e54aeee..5e763b916416 100644 --- a/ydb/core/tx/columnshard/engines/changes/abstract/abstract.cpp +++ b/ydb/core/tx/columnshard/engines/changes/abstract/abstract.cpp @@ -52,8 +52,8 @@ void TColumnEngineChanges::WriteIndexOnComplete(NColumnShard::TColumnShard* self } void TColumnEngineChanges::Compile(TFinalizationContext& context) noexcept { - Y_ABORT_UNLESS(Stage != EStage::Aborted); - Y_ABORT_UNLESS(Stage == EStage::Constructed); + AFL_VERIFY(Stage != EStage::Aborted); + AFL_VERIFY(Stage == EStage::Constructed); DoCompile(context); DoOnAfterCompile(); @@ -66,7 +66,7 @@ TColumnEngineChanges::~TColumnEngineChanges() { } void TColumnEngineChanges::Abort(NColumnShard::TColumnShard& self, TChangesFinishContext& context) { - Y_ABORT_UNLESS(Stage != EStage::Finished && Stage != EStage::Created && Stage != EStage::Aborted); + AFL_VERIFY(Stage != EStage::Finished && Stage != EStage::Created && Stage != EStage::Aborted)("stage", Stage)("reason", context.ErrorMessage); Stage = EStage::Aborted; OnFinish(self, context); } @@ -91,8 +91,8 @@ void TColumnEngineChanges::StartEmergency() { } } -void TColumnEngineChanges::AbortEmergency() { - AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "AbortEmergency"); +void TColumnEngineChanges::AbortEmergency(const TString& reason) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "AbortEmergency")("reason", reason); Stage = EStage::Aborted; OnAbortEmergency(); } diff --git a/ydb/core/tx/columnshard/engines/changes/abstract/abstract.h b/ydb/core/tx/columnshard/engines/changes/abstract/abstract.h index d65cdc755f44..aa8714d05b6d 100644 --- a/ydb/core/tx/columnshard/engines/changes/abstract/abstract.h +++ b/ydb/core/tx/columnshard/engines/changes/abstract/abstract.h @@ -264,7 +264,7 @@ class TColumnEngineChanges { } void StartEmergency(); - void AbortEmergency(); + void AbortEmergency(const TString& reason); void Abort(NColumnShard::TColumnShard& self, TChangesFinishContext& context); void Start(NColumnShard::TColumnShard& self); diff --git a/ydb/core/tx/columnshard/engines/ut/ut_logs_engine.cpp b/ydb/core/tx/columnshard/engines/ut/ut_logs_engine.cpp index e8813bed5093..9a20c83958c3 100644 --- a/ydb/core/tx/columnshard/engines/ut/ut_logs_engine.cpp +++ b/ydb/core/tx/columnshard/engines/ut/ut_logs_engine.cpp @@ -311,7 +311,7 @@ bool Insert(TColumnEngineForLogs& engine, TTestDbWrapper& db, TSnapshot snap, changes->WriteIndexOnExecute(nullptr, contextExecute); NOlap::TWriteIndexCompleteContext contextComplete(NActors::TActivationContext::AsActorContext(), 0, 0, TDuration::Zero(), engine); changes->WriteIndexOnComplete(nullptr, contextComplete); - changes->AbortEmergency(); + changes->AbortEmergency("testing"); return result; } @@ -348,7 +348,7 @@ bool Compact(TColumnEngineForLogs& engine, TTestDbWrapper& db, TSnapshot snap, N } } } - changes->AbortEmergency(); + changes->AbortEmergency("testing"); return result; } @@ -368,7 +368,7 @@ bool Cleanup(TColumnEngineForLogs& engine, TTestDbWrapper& db, TSnapshot snap, u changes->WriteIndexOnExecute(nullptr, contextExecute); NOlap::TWriteIndexCompleteContext contextComplete(NActors::TActivationContext::AsActorContext(), 0, 0, TDuration::Zero(), engine); changes->WriteIndexOnComplete(nullptr, contextComplete); - changes->AbortEmergency(); + changes->AbortEmergency("testing"); return result; } @@ -386,7 +386,7 @@ bool Ttl(TColumnEngineForLogs& engine, TTestDbWrapper& db, changes->WriteIndexOnExecute(nullptr, contextExecute); NOlap::TWriteIndexCompleteContext contextComplete(NActors::TActivationContext::AsActorContext(), 0, 0, TDuration::Zero(), engine); changes->WriteIndexOnComplete(nullptr, contextComplete); - changes->AbortEmergency(); + changes->AbortEmergency("testing"); return result; } diff --git a/ydb/core/tx/columnshard/engines/writer/compacted_blob_constructor.cpp b/ydb/core/tx/columnshard/engines/writer/compacted_blob_constructor.cpp index c2d0a1488b10..62fab2ed57d8 100644 --- a/ydb/core/tx/columnshard/engines/writer/compacted_blob_constructor.cpp +++ b/ydb/core/tx/columnshard/engines/writer/compacted_blob_constructor.cpp @@ -34,7 +34,7 @@ void TCompactedWriteController::DoOnReadyResult(const NActors::TActorContext& ct TCompactedWriteController::~TCompactedWriteController() { if (WriteIndexEv && WriteIndexEv->IndexChanges) { - WriteIndexEv->IndexChanges->AbortEmergency(); + WriteIndexEv->IndexChanges->AbortEmergency("TCompactedWriteController destructed with WriteIndexEv and WriteIndexEv->IndexChanges"); } } @@ -42,8 +42,10 @@ const NKikimr::NOlap::TBlobsAction& TCompactedWriteController::GetBlobsAction() return WriteIndexEv->IndexChanges->GetBlobsAction(); } -void TCompactedWriteController::DoAbort() { - WriteIndexEv->IndexChanges->AbortEmergency(); +void TCompactedWriteController::DoAbort(const TString& reason) { + if (WriteIndexEv && WriteIndexEv->IndexChanges) { + WriteIndexEv->IndexChanges->AbortEmergency("TCompactedWriteController aborted: " + reason); + } } } diff --git a/ydb/core/tx/columnshard/engines/writer/compacted_blob_constructor.h b/ydb/core/tx/columnshard/engines/writer/compacted_blob_constructor.h index d18d0c688abc..6772599ee05f 100644 --- a/ydb/core/tx/columnshard/engines/writer/compacted_blob_constructor.h +++ b/ydb/core/tx/columnshard/engines/writer/compacted_blob_constructor.h @@ -15,7 +15,7 @@ class TCompactedWriteController : public NColumnShard::IWriteController { TActorId DstActor; protected: void DoOnReadyResult(const NActors::TActorContext& ctx, const NColumnShard::TBlobPutResult::TPtr& putResult) override; - virtual void DoAbort() override; + virtual void DoAbort(const TString& reason) override; public: const TBlobsAction& GetBlobsAction(); diff --git a/ydb/core/tx/columnshard/engines/writer/write_controller.h b/ydb/core/tx/columnshard/engines/writer/write_controller.h index f5df94e5ebf9..ae51e5571cec 100644 --- a/ydb/core/tx/columnshard/engines/writer/write_controller.h +++ b/ydb/core/tx/columnshard/engines/writer/write_controller.h @@ -41,7 +41,7 @@ class IWriteController { } NOlap::TBlobWriteInfo& AddWriteTask(NOlap::TBlobWriteInfo&& task); - virtual void DoAbort() { + virtual void DoAbort(const TString& /*reason*/) { } public: const NOlap::TWriteActionsCollection& GetBlobActions() const { @@ -61,11 +61,12 @@ class IWriteController { return TStringBuilder() << "size=" << size << ";count=" << WriteTasks.size() << ";actions=" << sb << ";"; } - void Abort() { + void Abort(const TString& reason) { + AFL_WARN(NKikimrServices::TX_COLUMNSHARD)("event", "IWriteController aborted")("reason", reason); for (auto&& i : WritingActions) { i.second->Abort(); } - DoAbort(); + DoAbort(reason); } using TPtr = std::shared_ptr; diff --git a/ydb/core/tx/columnshard/write_actor.cpp b/ydb/core/tx/columnshard/write_actor.cpp index fc57d5ddfafe..25cbb99b5915 100644 --- a/ydb/core/tx/columnshard/write_actor.cpp +++ b/ydb/core/tx/columnshard/write_actor.cpp @@ -36,7 +36,7 @@ class TWriteActor: public TActorBootstrapped, public TMonitoringObj if (status != NKikimrProto::OK) { ACFL_ERROR("event", "TEvPutResult")("blob_id", msg->Id.ToString())("status", status)("error", msg->ErrorReason); - WriteController->Abort(); + WriteController->Abort("cannot write blob " + msg->Id.ToString() + ", status: " + ::ToString(status) + ". reason: " + msg->ErrorReason); return SendResultAndDie(ctx, status); }