diff --git a/be/src/agent/task_worker_pool.cpp b/be/src/agent/task_worker_pool.cpp index cc10dbc76f1ec8..5c9aab3e0baaa0 100644 --- a/be/src/agent/task_worker_pool.cpp +++ b/be/src/agent/task_worker_pool.cpp @@ -352,6 +352,7 @@ void TaskWorkerPool::_alter_inverted_index_worker_thread_callback() { 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 = _env->storage_engine()->execute_task(&engine_task); } else { status = @@ -587,6 +588,7 @@ void TaskWorkerPool::_check_consistency_worker_thread_callback() { 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 = _env->storage_engine()->execute_task(&engine_task); if (!status.ok()) { LOG_WARNING("failed to check consistency") @@ -1487,6 +1489,7 @@ void PushTaskPool::_push_worker_thread_callback() { std::vector tablet_infos; EngineBatchLoadTask engine_task(push_req, &tablet_infos); + SCOPED_ATTACH_TASK(engine_task.mem_tracker()); auto status = _env->storage_engine()->execute_task(&engine_task); // Return result to fe @@ -1893,6 +1896,7 @@ void CloneTaskPool::_clone_worker_thread_callback() { std::vector tablet_infos; EngineCloneTask engine_task(clone_req, _master_info, agent_task_req.signature, &tablet_infos); + SCOPED_ATTACH_TASK(engine_task.mem_tracker()); auto status = _env->storage_engine()->execute_task(&engine_task); // 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 09cc728ee186ce..49ef87a3921e0b 100644 --- a/be/src/olap/task/engine_batch_load_task.cpp +++ b/be/src/olap/task/engine_batch_load_task.cpp @@ -73,7 +73,6 @@ EngineBatchLoadTask::EngineBatchLoadTask(TPushReq& push_req, std::vector* _tablet_infos; std::string _remote_file_path; std::string _local_file_path; - std::shared_ptr _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 614802e1f0990d..752eb980e662c8 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 58daba515ccd7b..fa4d879f8fef8d 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 @@ class EngineChecksumTask : public EngineTask { TSchemaHash _schema_hash; TVersion _version; uint32_t* _checksum; - std::shared_ptr _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 7abf6fbdc4fc70..60a4ccd46d1076 100644 --- a/be/src/olap/task/engine_clone_task.cpp +++ b/be/src/olap/task/engine_clone_task.cpp @@ -148,7 +148,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 ae8de520963c6f..08afc47283a6ce 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 @@ class EngineCloneTask : public EngineTask { const TMasterInfo& _master_info; int64_t _copy_size; int64_t _copy_time_ms; - std::shared_ptr _mem_tracker; }; // EngineTask } // namespace doris diff --git a/be/src/olap/task/engine_index_change_task.cpp b/be/src/olap/task/engine_index_change_task.cpp index 9fcdedf0f1055f..15234ae36fc8cd 100644 --- a/be/src/olap/task/engine_index_change_task.cpp +++ b/be/src/olap/task/engine_index_change_task.cpp @@ -17,7 +17,7 @@ #include "olap/task/engine_index_change_task.h" -#include "runtime/memory/mem_tracker.h" +#include "runtime/memory/mem_tracker_limiter.h" #include "runtime/thread_context.h" namespace doris { @@ -33,7 +33,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::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 5021bacc0a25f5..f9d4998f0102a5 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 @@ class EngineIndexChangeTask : public EngineTask { private: const TAlterInvertedIndexReq& _alter_inverted_index_req; - - std::shared_ptr _mem_tracker; }; // EngineTask } // namespace doris diff --git a/be/src/olap/task/engine_task.h b/be/src/olap/task/engine_task.h index 5875e6e9e6be7c..5085d6c904385f 100644 --- a/be/src/olap/task/engine_task.h +++ b/be/src/olap/task/engine_task.h @@ -27,6 +27,8 @@ namespace doris { +class MemTrackerLimiter; + // base class for storage engine // add "Engine" as task prefix to prevent duplicate name with agent task class EngineTask { @@ -34,6 +36,9 @@ class EngineTask { virtual ~EngineTask() = default; virtual Status execute() { return Status::OK(); } virtual Status finish() { return Status::OK(); } + std::shared_ptr mem_tracker() const { return _mem_tracker; } + + std::shared_ptr _mem_tracker; }; } // end namespace doris diff --git a/be/src/runtime/thread_context.h b/be/src/runtime/thread_context.h index c32a9d56532933..bbfd1a029797e5 100644 --- a/be/src/runtime/thread_context.h +++ b/be/src/runtime/thread_context.h @@ -167,6 +167,7 @@ class ThreadContext { 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;