aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorivanmorozov333 <ivanmorozov@ydb.tech>2024-12-24 18:44:37 +0300
committerGitHub <noreply@github.com>2024-12-24 18:44:37 +0300
commitcf344b64297e6a79d1e538be9f8f59afb06a2a97 (patch)
tree97e4b7648e4d8907f38092a27c9f7fc839e6a252
parent18d6880714f8c58d4417847c42c1829db98121e2 (diff)
downloadydb-cf344b64297e6a79d1e538be9f8f59afb06a2a97.tar.gz
fix coredumps simple (#12914)
-rw-r--r--ydb/core/tx/columnshard/counters/writes_monitor.cpp6
-rw-r--r--ydb/core/tx/columnshard/counters/writes_monitor.h4
-rw-r--r--ydb/core/tx/columnshard/data_reader/actor.cpp7
-rw-r--r--ydb/core/tx/columnshard/data_reader/actor.h2
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());