This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git

commit d60d804d9cd119eb8cd720d0d71354c5c39f21bc
Author: Xinyi Zou <zouxiny...@gmail.com>
AuthorDate: Mon Apr 8 10:22:45 2024 +0800

    [fix](memory) Fix task repeat attach task DCHECK failed #32784 (#33343)
    
    [branch-2.1](memory) Fix CCR task repeat attach task DCHECK failed3 #33366
---
 be/src/agent/task_worker_pool.cpp             | 4 ++++
 be/src/olap/task/engine_alter_tablet_task.h   | 3 ---
 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 +
 12 files changed, 11 insertions(+), 17 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_alter_tablet_task.h 
b/be/src/olap/task/engine_alter_tablet_task.h
index 70f4a576daa..ae113a5faf9 100644
--- a/be/src/olap/task/engine_alter_tablet_task.h
+++ b/be/src/olap/task/engine_alter_tablet_task.h
@@ -23,7 +23,6 @@
 #include "olap/task/engine_task.h"
 
 namespace doris {
-class MemTrackerLimiter;
 class TAlterInvertedIndexReq;
 class TAlterTabletReqV2;
 
@@ -38,8 +37,6 @@ public:
 
 private:
     const TAlterTabletReqV2& _alter_tablet_req;
-
-    std::shared_ptr<MemTrackerLimiter> _mem_tracker;
 }; // EngineTask
 
 } // namespace doris
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: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to