diff --git a/be/src/io/fs/s3_file_bufferpool.cpp b/be/src/io/fs/s3_file_bufferpool.cpp index f1f90ea7f2ef06..a35fceb8da0523 100644 --- a/be/src/io/fs/s3_file_bufferpool.cpp +++ b/be/src/io/fs/s3_file_bufferpool.cpp @@ -84,10 +84,11 @@ FileBuffer::FileBuffer(BufferType type, std::function all _size(0), _state(std::move(state)), _inner_data(std::make_unique()), - _capacity(_inner_data->size()) {} + _capacity(_inner_data->size()), + _mem_tracker(doris::thread_context()->thread_mem_tracker_mgr->limiter_mem_tracker()) {} FileBuffer::~FileBuffer() { - SCOPED_SWITCH_THREAD_MEM_TRACKER_LIMITER(ExecEnv::GetInstance()->s3_file_buffer_tracker()); + SCOPED_SWITCH_THREAD_MEM_TRACKER_LIMITER(_mem_tracker); _inner_data.reset(); } @@ -240,7 +241,6 @@ FileBufferBuilder& FileBufferBuilder::set_allocate_file_blocks_holder( } Status FileBufferBuilder::build(std::shared_ptr* buf) { - SCOPED_SWITCH_THREAD_MEM_TRACKER_LIMITER(ExecEnv::GetInstance()->s3_file_buffer_tracker()); OperationState state(_sync_after_complete_task, _is_cancelled); if (_type == BufferType::UPLOAD) { diff --git a/be/src/io/fs/s3_file_bufferpool.h b/be/src/io/fs/s3_file_bufferpool.h index 1b552850ae3af8..ff88587816db8b 100644 --- a/be/src/io/fs/s3_file_bufferpool.h +++ b/be/src/io/fs/s3_file_bufferpool.h @@ -27,6 +27,7 @@ #include "common/status.h" #include "io/cache/file_block.h" +#include "runtime/memory/mem_tracker_limiter.h" #include "util/crc32c.h" #include "util/slice.h" #include "util/threadpool.h" @@ -127,6 +128,7 @@ struct FileBuffer { struct PartData; std::unique_ptr _inner_data; size_t _capacity; + std::shared_ptr _mem_tracker; }; struct DownloadFileBuffer final : public FileBuffer {