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

dataroaring pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 2a4ae8f5787 [fix](memory) Fix CloudEngineCalcDeleteBitmapTask handle() 
attach task in thread context (#33057)
2a4ae8f5787 is described below

commit 2a4ae8f5787153e9b57c81eba6deafde2c7bcc36
Author: Xinyi Zou <zouxiny...@gmail.com>
AuthorDate: Sat Mar 30 09:26:06 2024 +0800

    [fix](memory) Fix CloudEngineCalcDeleteBitmapTask handle() attach task in 
thread context (#33057)
---
 be/src/agent/task_worker_pool.cpp                     |  1 +
 be/src/cloud/cloud_delta_writer.cpp                   |  3 ++-
 be/src/cloud/cloud_engine_calc_delete_bitmap_task.cpp | 15 +++++++++++++--
 be/src/cloud/cloud_engine_calc_delete_bitmap_task.h   |  2 ++
 4 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/be/src/agent/task_worker_pool.cpp 
b/be/src/agent/task_worker_pool.cpp
index bb9b842705b..d212938f122 100644
--- a/be/src/agent/task_worker_pool.cpp
+++ b/be/src/agent/task_worker_pool.cpp
@@ -2004,6 +2004,7 @@ void calc_delete_bimtap_callback(CloudStorageEngine& 
engine, const TAgentTaskReq
     const auto& calc_delete_bitmap_req = req.calc_delete_bitmap_req;
     CloudEngineCalcDeleteBitmapTask engine_task(engine, 
calc_delete_bitmap_req, &error_tablet_ids,
                                                 &succ_tablet_ids);
+    SCOPED_ATTACH_TASK(engine_task.mem_tracker());
     status = engine_task.execute();
 
     TFinishTaskRequest finish_task_request;
diff --git a/be/src/cloud/cloud_delta_writer.cpp 
b/be/src/cloud/cloud_delta_writer.cpp
index ef5f4dc33f7..23e00dfb746 100644
--- a/be/src/cloud/cloud_delta_writer.cpp
+++ b/be/src/cloud/cloud_delta_writer.cpp
@@ -52,7 +52,8 @@ Status 
CloudDeltaWriter::batch_init(std::vector<CloudDeltaWriter*> writers) {
             if (writer->_is_init || writer->_is_cancelled) {
                 return Status::OK();
             }
-            return writer->init();
+            Status st = writer->init(); // included in SCOPED_ATTACH_TASK
+            return st;
         });
     }
 
diff --git a/be/src/cloud/cloud_engine_calc_delete_bitmap_task.cpp 
b/be/src/cloud/cloud_engine_calc_delete_bitmap_task.cpp
index 2ff9b8e91ba..9c784b1ced7 100644
--- a/be/src/cloud/cloud_engine_calc_delete_bitmap_task.cpp
+++ b/be/src/cloud/cloud_engine_calc_delete_bitmap_task.cpp
@@ -17,6 +17,8 @@
 
 #include "cloud/cloud_engine_calc_delete_bitmap_task.h"
 
+#include <fmt/format.h>
+
 #include <memory>
 
 #include "cloud/cloud_meta_mgr.h"
@@ -29,6 +31,7 @@
 #include "olap/tablet_meta.h"
 #include "olap/txn_manager.h"
 #include "olap/utils.h"
+#include "runtime/memory/mem_tracker_limiter.h"
 
 namespace doris {
 
@@ -38,7 +41,10 @@ 
CloudEngineCalcDeleteBitmapTask::CloudEngineCalcDeleteBitmapTask(
         : _engine(engine),
           _cal_delete_bitmap_req(cal_delete_bitmap_req),
           _error_tablet_ids(error_tablet_ids),
-          _succ_tablet_ids(succ_tablet_ids) {}
+          _succ_tablet_ids(succ_tablet_ids) {
+    _mem_tracker = 
MemTrackerLimiter::create_shared(MemTrackerLimiter::Type::SCHEMA_CHANGE,
+                                                    
"CloudEngineCalcDeleteBitmapTask");
+}
 
 void CloudEngineCalcDeleteBitmapTask::add_error_tablet_id(int64_t tablet_id, 
const Status& err) {
     std::lock_guard<std::mutex> lck(_mutex);
@@ -126,9 +132,14 @@ 
CloudTabletCalcDeleteBitmapTask::CloudTabletCalcDeleteBitmapTask(
           _engine_calc_delete_bitmap_task(engine_task),
           _tablet(tablet),
           _transaction_id(transaction_id),
-          _version(version) {}
+          _version(version) {
+    _mem_tracker = MemTrackerLimiter::create_shared(
+            MemTrackerLimiter::Type::SCHEMA_CHANGE,
+            fmt::format("CloudTabletCalcDeleteBitmapTask#_transaction_id={}", 
_transaction_id));
+}
 
 void CloudTabletCalcDeleteBitmapTask::handle() const {
+    SCOPED_ATTACH_TASK(_mem_tracker);
     RowsetSharedPtr rowset;
     DeleteBitmapPtr delete_bitmap;
     RowsetIdUnorderedSet rowset_ids;
diff --git a/be/src/cloud/cloud_engine_calc_delete_bitmap_task.h 
b/be/src/cloud/cloud_engine_calc_delete_bitmap_task.h
index 514f1b059d5..ad5486b9cb6 100644
--- a/be/src/cloud/cloud_engine_calc_delete_bitmap_task.h
+++ b/be/src/cloud/cloud_engine_calc_delete_bitmap_task.h
@@ -28,6 +28,7 @@
 namespace doris {
 
 class CloudEngineCalcDeleteBitmapTask;
+class MemTrackerLimiter;
 
 class CloudTabletCalcDeleteBitmapTask {
 public:
@@ -46,6 +47,7 @@ private:
     std::shared_ptr<CloudTablet> _tablet;
     int64_t _transaction_id;
     int64_t _version;
+    std::shared_ptr<MemTrackerLimiter> _mem_tracker;
 };
 
 class CloudEngineCalcDeleteBitmapTask : public EngineTask {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to