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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]