This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new 208079aa417 [fix](memory) Fix task repeat attach task DCHECK failed
#32784 (#33343)
208079aa417 is described below
commit 208079aa417809b84aaad85ba417f44ac1a07bb9
Author: Xinyi Zou <[email protected]>
AuthorDate: Mon Apr 8 10:22:45 2024 +0800
[fix](memory) Fix task repeat attach task DCHECK failed #32784 (#33343)
---
be/src/agent/task_worker_pool.cpp | 4 ++++
be/src/olap/task/engine_batch_load_task.cpp | 1 -
be/src/olap/task/engine_batch_load_task.h | 2 --
be/src/olap/task/engine_checksum_task.cpp | 1 -
be/src/olap/task/engine_checksum_task.h | 2 --
be/src/olap/task/engine_clone_task.cpp | 1 -
be/src/olap/task/engine_clone_task.h | 2 --
be/src/olap/task/engine_index_change_task.cpp | 4 +---
be/src/olap/task/engine_index_change_task.h | 2 --
be/src/olap/task/engine_task.h | 5 +++++
be/src/runtime/thread_context.h | 1 +
11 files changed, 11 insertions(+), 14 deletions(-)
diff --git a/be/src/agent/task_worker_pool.cpp
b/be/src/agent/task_worker_pool.cpp
index 7c798a18a97..aa986d46ec4 100644
--- a/be/src/agent/task_worker_pool.cpp
+++ b/be/src/agent/task_worker_pool.cpp
@@ -631,6 +631,7 @@ void alter_inverted_index_callback(StorageEngine& engine,
const TAgentTaskReques
auto tablet_ptr =
engine.tablet_manager()->get_tablet(alter_inverted_index_rq.tablet_id);
if (tablet_ptr != nullptr) {
EngineIndexChangeTask engine_task(alter_inverted_index_rq);
+ SCOPED_ATTACH_TASK(engine_task.mem_tracker());
status = engine_task.execute();
} else {
status = Status::NotFound("could not find tablet {}",
alter_inverted_index_rq.tablet_id);
@@ -857,6 +858,7 @@ void check_consistency_callback(StorageEngine& engine,
const TAgentTaskRequest&
EngineChecksumTask engine_task(check_consistency_req.tablet_id,
check_consistency_req.schema_hash,
check_consistency_req.version,
&checksum);
+ SCOPED_ATTACH_TASK(engine_task.mem_tracker());
Status status = engine_task.execute();
if (!status.ok()) {
LOG_WARNING("failed to check consistency")
@@ -1438,6 +1440,7 @@ void push_callback(const TAgentTaskRequest& req) {
std::vector<TTabletInfo> tablet_infos;
EngineBatchLoadTask engine_task(const_cast<TPushReq&>(push_req),
&tablet_infos);
+ SCOPED_ATTACH_TASK(engine_task.mem_tracker());
auto status = engine_task.execute();
// Return result to fe
@@ -1695,6 +1698,7 @@ void clone_callback(StorageEngine& engine, const
TMasterInfo& master_info,
std::vector<TTabletInfo> tablet_infos;
EngineCloneTask engine_task(clone_req, master_info, req.signature,
&tablet_infos);
+ SCOPED_ATTACH_TASK(engine_task.mem_tracker());
auto status = engine_task.execute();
// Return result to fe
TFinishTaskRequest finish_task_request;
diff --git a/be/src/olap/task/engine_batch_load_task.cpp
b/be/src/olap/task/engine_batch_load_task.cpp
index 6f4ff53e77c..5c6df55d3fc 100644
--- a/be/src/olap/task/engine_batch_load_task.cpp
+++ b/be/src/olap/task/engine_batch_load_task.cpp
@@ -72,7 +72,6 @@ EngineBatchLoadTask::EngineBatchLoadTask(TPushReq& push_req,
std::vector<TTablet
EngineBatchLoadTask::~EngineBatchLoadTask() {}
Status EngineBatchLoadTask::execute() {
- SCOPED_ATTACH_TASK(_mem_tracker);
Status status;
if (_push_req.push_type == TPushType::LOAD_V2) {
RETURN_IF_ERROR(_init());
diff --git a/be/src/olap/task/engine_batch_load_task.h
b/be/src/olap/task/engine_batch_load_task.h
index e07deafdea1..f632103decf 100644
--- a/be/src/olap/task/engine_batch_load_task.h
+++ b/be/src/olap/task/engine_batch_load_task.h
@@ -28,7 +28,6 @@
#include "olap/task/engine_task.h"
namespace doris {
-class MemTrackerLimiter;
class TPushReq;
class TTabletInfo;
@@ -71,7 +70,6 @@ private:
std::vector<TTabletInfo>* _tablet_infos;
std::string _remote_file_path;
std::string _local_file_path;
- std::shared_ptr<MemTrackerLimiter> _mem_tracker;
}; // class EngineBatchLoadTask
} // namespace doris
#endif // DORIS_BE_SRC_OLAP_TASK_ENGINE_BATCH_LOAD_TASK_H
diff --git a/be/src/olap/task/engine_checksum_task.cpp
b/be/src/olap/task/engine_checksum_task.cpp
index ff977df3d32..b7a5545c37a 100644
--- a/be/src/olap/task/engine_checksum_task.cpp
+++ b/be/src/olap/task/engine_checksum_task.cpp
@@ -50,7 +50,6 @@ EngineChecksumTask::EngineChecksumTask(TTabletId tablet_id,
TSchemaHash schema_h
}
Status EngineChecksumTask::execute() {
- SCOPED_ATTACH_TASK(_mem_tracker);
return _compute_checksum();
} // execute
diff --git a/be/src/olap/task/engine_checksum_task.h
b/be/src/olap/task/engine_checksum_task.h
index 58daba515cc..fa4d879f8fe 100644
--- a/be/src/olap/task/engine_checksum_task.h
+++ b/be/src/olap/task/engine_checksum_task.h
@@ -27,7 +27,6 @@
#include "olap/task/engine_task.h"
namespace doris {
-class MemTrackerLimiter;
// base class for storage engine
// add "Engine" as task prefix to prevent duplicate name with agent task
@@ -49,7 +48,6 @@ private:
TSchemaHash _schema_hash;
TVersion _version;
uint32_t* _checksum;
- std::shared_ptr<MemTrackerLimiter> _mem_tracker;
}; // EngineTask
} // namespace doris
diff --git a/be/src/olap/task/engine_clone_task.cpp
b/be/src/olap/task/engine_clone_task.cpp
index 571b3208aec..c5d1d858777 100644
--- a/be/src/olap/task/engine_clone_task.cpp
+++ b/be/src/olap/task/engine_clone_task.cpp
@@ -155,7 +155,6 @@ EngineCloneTask::EngineCloneTask(const TCloneReq&
clone_req, const TMasterInfo&
Status EngineCloneTask::execute() {
// register the tablet to avoid it is deleted by gc thread during clone
process
- SCOPED_ATTACH_TASK(_mem_tracker);
if
(!StorageEngine::instance()->tablet_manager()->register_clone_tablet(_clone_req.tablet_id))
{
return Status::InternalError("tablet {} is under clone",
_clone_req.tablet_id);
}
diff --git a/be/src/olap/task/engine_clone_task.h
b/be/src/olap/task/engine_clone_task.h
index dd33f263e18..6924bfc2aa9 100644
--- a/be/src/olap/task/engine_clone_task.h
+++ b/be/src/olap/task/engine_clone_task.h
@@ -32,7 +32,6 @@
namespace doris {
class DataDir;
-class MemTrackerLimiter;
class TCloneReq;
class TMasterInfo;
class TTabletInfo;
@@ -95,7 +94,6 @@ private:
const TMasterInfo& _master_info;
int64_t _copy_size;
int64_t _copy_time_ms;
- std::shared_ptr<MemTrackerLimiter> _mem_tracker;
std::vector<PendingRowsetGuard> _pending_rs_guards;
}; // EngineTask
diff --git a/be/src/olap/task/engine_index_change_task.cpp
b/be/src/olap/task/engine_index_change_task.cpp
index 9fcdedf0f10..2ff41eccd8b 100644
--- a/be/src/olap/task/engine_index_change_task.cpp
+++ b/be/src/olap/task/engine_index_change_task.cpp
@@ -17,8 +17,7 @@
#include "olap/task/engine_index_change_task.h"
-#include "runtime/memory/mem_tracker.h"
-#include "runtime/thread_context.h"
+#include "runtime/memory/mem_tracker_limiter.h"
namespace doris {
@@ -33,7 +32,6 @@ EngineIndexChangeTask::EngineIndexChangeTask(
}
Status EngineIndexChangeTask::execute() {
- SCOPED_ATTACH_TASK(_mem_tracker);
DorisMetrics::instance()->alter_inverted_index_requests_total->increment(1);
uint64_t start = std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::system_clock::now().time_since_epoch())
diff --git a/be/src/olap/task/engine_index_change_task.h
b/be/src/olap/task/engine_index_change_task.h
index a4a6a7942b1..5fc35c1b1d6 100644
--- a/be/src/olap/task/engine_index_change_task.h
+++ b/be/src/olap/task/engine_index_change_task.h
@@ -35,8 +35,6 @@ public:
private:
const TAlterInvertedIndexReq& _alter_inverted_index_req;
-
- std::shared_ptr<MemTrackerLimiter> _mem_tracker;
}; // EngineTask
} // namespace doris
diff --git a/be/src/olap/task/engine_task.h b/be/src/olap/task/engine_task.h
index 7855444933e..3fec6579620 100644
--- a/be/src/olap/task/engine_task.h
+++ b/be/src/olap/task/engine_task.h
@@ -27,12 +27,17 @@
namespace doris {
+class MemTrackerLimiter;
+
// base class for storage engine
// add "Engine" as task prefix to prevent duplicate name with agent task
class EngineTask {
public:
virtual ~EngineTask() = default;
virtual Status execute() = 0;
+ std::shared_ptr<MemTrackerLimiter> mem_tracker() const { return
_mem_tracker; }
+
+ std::shared_ptr<MemTrackerLimiter> _mem_tracker;
};
} // end namespace doris
diff --git a/be/src/runtime/thread_context.h b/be/src/runtime/thread_context.h
index 463dbf44349..3c0fc66dda5 100644
--- a/be/src/runtime/thread_context.h
+++ b/be/src/runtime/thread_context.h
@@ -141,6 +141,7 @@ public:
DCHECK(mem_tracker);
// Orphan is thread default tracker.
DCHECK(thread_mem_tracker()->label() == "Orphan")
+ << ", thread mem tracker label: " <<
thread_mem_tracker()->label()
<< ", attach mem tracker label: " << mem_tracker->label();
#endif
_task_id = task_id;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]