diff options
author | ivanmorozov333 <ivanmorozov@ydb.tech> | 2024-12-24 18:44:37 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-24 18:44:37 +0300 |
commit | cf344b64297e6a79d1e538be9f8f59afb06a2a97 (patch) | |
tree | 97e4b7648e4d8907f38092a27c9f7fc839e6a252 | |
parent | 18d6880714f8c58d4417847c42c1829db98121e2 (diff) | |
download | ydb-cf344b64297e6a79d1e538be9f8f59afb06a2a97.tar.gz |
fix coredumps simple (#12914)
-rw-r--r-- | ydb/core/tx/columnshard/counters/writes_monitor.cpp | 6 | ||||
-rw-r--r-- | ydb/core/tx/columnshard/counters/writes_monitor.h | 4 | ||||
-rw-r--r-- | ydb/core/tx/columnshard/data_reader/actor.cpp | 7 | ||||
-rw-r--r-- | ydb/core/tx/columnshard/data_reader/actor.h | 2 |
4 files changed, 15 insertions, 4 deletions
diff --git a/ydb/core/tx/columnshard/counters/writes_monitor.cpp b/ydb/core/tx/columnshard/counters/writes_monitor.cpp index a29f0681ee..380b6bb719 100644 --- a/ydb/core/tx/columnshard/counters/writes_monitor.cpp +++ b/ydb/core/tx/columnshard/counters/writes_monitor.cpp @@ -15,14 +15,16 @@ void TWritesMonitor::OnStartWrite(const ui64 dataSize) { UpdateTabletCounters(); } -void TWritesMonitor::OnFinishWrite(const ui64 dataSize, const ui32 writesCount /*= 1*/) { +void TWritesMonitor::OnFinishWrite(const ui64 dataSize, const ui32 writesCount /*= 1*/, const bool onDestroy /*= false*/) { AFL_VERIFY(writesCount <= WritesInFlightLocal); AFL_VERIFY(dataSize <= WritesSizeInFlightLocal); WritesSizeInFlightLocal -= dataSize; WritesInFlightLocal -= writesCount; AFL_VERIFY(0 <= WritesInFlight.Sub(writesCount)); AFL_VERIFY(0 <= WritesSizeInFlight.Sub(dataSize)); - UpdateTabletCounters(); + if (!onDestroy) { + UpdateTabletCounters(); + } } TString TWritesMonitor::DebugString() const { diff --git a/ydb/core/tx/columnshard/counters/writes_monitor.h b/ydb/core/tx/columnshard/counters/writes_monitor.h index 0a7f21c5e1..d66bd010f6 100644 --- a/ydb/core/tx/columnshard/counters/writes_monitor.h +++ b/ydb/core/tx/columnshard/counters/writes_monitor.h @@ -21,12 +21,12 @@ public: } ~TWritesMonitor() { - OnFinishWrite(WritesSizeInFlightLocal, WritesInFlightLocal); + OnFinishWrite(WritesSizeInFlightLocal, WritesInFlightLocal, true); } void OnStartWrite(const ui64 dataSize); - void OnFinishWrite(const ui64 dataSize, const ui32 writesCount = 1); + void OnFinishWrite(const ui64 dataSize, const ui32 writesCount = 1, const bool onDestroy = false); TString DebugString() const; diff --git a/ydb/core/tx/columnshard/data_reader/actor.cpp b/ydb/core/tx/columnshard/data_reader/actor.cpp index d97def756f..32924b1433 100644 --- a/ydb/core/tx/columnshard/data_reader/actor.cpp +++ b/ydb/core/tx/columnshard/data_reader/actor.cpp @@ -59,6 +59,13 @@ void TActor::HandleExecute(NKqp::TEvKqpCompute::TEvScanError::TPtr& ev) { PassAway(); } +void TActor::HandleExecute(NActors::TEvents::TEvUndelivered::TPtr& ev) { + SwitchStage(std::nullopt, EStage::Finished); + AFL_ERROR(NKikimrServices::TX_COLUMNSHARD_RESTORE)("event", "problem_on_event_undelivered")("reason", ev->Get()->Reason); + RestoreTask->OnError("cannot delivery event: " + ::ToString(ev->Get()->Reason)); + PassAway(); +} + void TActor::HandleExecute(NActors::TEvents::TEvWakeup::TPtr& /*ev*/) { if (!CheckActivity()) { TBase::Send(*ScanActorId, new NKqp::TEvKqp::TEvAbortExecution(NYql::NDqProto::StatusIds::ABORTED, "external task aborted")); diff --git a/ydb/core/tx/columnshard/data_reader/actor.h b/ydb/core/tx/columnshard/data_reader/actor.h index e7356b87fc..d395aa2bc0 100644 --- a/ydb/core/tx/columnshard/data_reader/actor.h +++ b/ydb/core/tx/columnshard/data_reader/actor.h @@ -78,6 +78,7 @@ protected: void HandleExecute(NKqp::TEvKqpCompute::TEvScanInitActor::TPtr& ev); void HandleExecute(NKqp::TEvKqpCompute::TEvScanData::TPtr& ev); void HandleExecute(NKqp::TEvKqpCompute::TEvScanError::TPtr& ev); + void HandleExecute(NActors::TEvents::TEvUndelivered::TPtr& ev); void HandleExecute(NActors::TEvents::TEvWakeup::TPtr& ev); public: @@ -95,6 +96,7 @@ public: hFunc(NKqp::TEvKqpCompute::TEvScanInitActor, HandleExecute); hFunc(NKqp::TEvKqpCompute::TEvScanData, HandleExecute); hFunc(NKqp::TEvKqpCompute::TEvScanError, HandleExecute); + hFunc(NActors::TEvents::TEvUndelivered, HandleExecute); hFunc(NActors::TEvents::TEvWakeup, HandleExecute); default: AFL_VERIFY(false)("type", ev->GetTypeName()); |