[enhancement] Refactor to improve the usability of MemTracker (step2) (#10823)

This commit is contained in:
Xinyi Zou
2022-07-21 17:11:28 +08:00
committed by GitHub
parent 5f6f35e886
commit 4960043f5e
316 changed files with 2145 additions and 4369 deletions

View File

@ -60,10 +60,9 @@ Status TopNNode::init(const TPlanNode& tnode, RuntimeState* state) {
Status TopNNode::prepare(RuntimeState* state) {
SCOPED_TIMER(_runtime_profile->total_time_counter());
RETURN_IF_ERROR(ExecNode::prepare(state));
SCOPED_SWITCH_TASK_THREAD_LOCAL_MEM_TRACKER(mem_tracker());
_tuple_pool.reset(new MemPool(mem_tracker().get()));
RETURN_IF_ERROR(_sort_exec_exprs.prepare(state, child(0)->row_desc(), _row_descriptor,
expr_mem_tracker()));
SCOPED_CONSUME_MEM_TRACKER(mem_tracker());
_tuple_pool.reset(new MemPool(mem_tracker()));
RETURN_IF_ERROR(_sort_exec_exprs.prepare(state, child(0)->row_desc(), _row_descriptor));
// AddExprCtxsToFree(_sort_exec_exprs);
_tuple_row_less_than.reset(
@ -77,8 +76,8 @@ Status TopNNode::prepare(RuntimeState* state) {
Status TopNNode::open(RuntimeState* state) {
SCOPED_TIMER(_runtime_profile->total_time_counter());
SCOPED_SWITCH_TASK_THREAD_LOCAL_MEM_TRACKER(mem_tracker());
RETURN_IF_ERROR(ExecNode::open(state));
SCOPED_CONSUME_MEM_TRACKER(mem_tracker());
RETURN_IF_CANCELLED(state);
RETURN_IF_ERROR(state->check_query_state("Top n, before open."));
RETURN_IF_ERROR(_sort_exec_exprs.open(state));
@ -130,7 +129,7 @@ Status TopNNode::open(RuntimeState* state) {
Status TopNNode::get_next(RuntimeState* state, RowBatch* row_batch, bool* eos) {
SCOPED_TIMER(_runtime_profile->total_time_counter());
SCOPED_SWITCH_TASK_THREAD_LOCAL_EXISTED_MEM_TRACKER(mem_tracker());
SCOPED_CONSUME_MEM_TRACKER(mem_tracker());
RETURN_IF_CANCELLED(state);
RETURN_IF_ERROR(state->check_query_state("Top n, before moving result to row_batch."));
@ -233,7 +232,7 @@ void TopNNode::push_down_predicate(RuntimeState* state, std::list<ExprContext*>*
if ((*iter)->root()->is_bound(&_tuple_ids)) {
// LOG(INFO) << "push down success expr is " << (*iter)->debug_string();
// (*iter)->get_child(0)->prepare(state, row_desc());
(*iter)->prepare(state, row_desc(), _expr_mem_tracker);
(*iter)->prepare(state, row_desc());
(*iter)->open(state);
_conjunct_ctxs.push_back(*iter);
iter = expr_ctxs->erase(iter);