@@ -59,6 +59,7 @@ PipelineTask::PipelineTask(
5959#else
6060 _query_id (fragment_context->get_query_id ()),
6161#endif
62+ _pip_id (pipeline->id ()),
6263 _index(task_id),
6364 _pipeline(pipeline),
6465 _opened(false ),
@@ -71,7 +72,8 @@ PipelineTask::PipelineTask(
7172 _sink(pipeline->sink_shared_pointer ()),
7273 _le_state_map(std::move(le_state_map)),
7374 _task_idx(task_idx),
74- _execution_dep(state->get_query_ctx ()->get_execution_dependency()) {
75+ _execution_dep(state->get_query_ctx ()->get_execution_dependency()),
76+ _pipeline_name(_pipeline->name ()){
7577 _pipeline_task_watcher.start ();
7678
7779 auto shared_state = _sink->create_shared_state ();
@@ -314,11 +316,11 @@ Status PipelineTask::execute(bool* eos) {
314316 }
315317 int64_t delta_cpu_time = cpu_time_stop_watch.elapsed_time ();
316318 _task_cpu_timer->update (delta_cpu_time);
317- auto cpu_qs = query_context ()->get_cpu_statistics ();
319+ auto cpu_qs = fragment_context-> get_query_ctx ()->get_cpu_statistics ();
318320 if (cpu_qs) {
319321 cpu_qs->add_cpu_nanos (delta_cpu_time);
320322 }
321- query_context ()->update_cpu_time (delta_cpu_time);
323+ fragment_context-> get_query_ctx ()->update_cpu_time (delta_cpu_time);
322324 }};
323325 if (_wait_to_start ()) {
324326 if (config::enable_prefetch_tablet) {
@@ -502,13 +504,18 @@ bool PipelineTask::should_revoke_memory(RuntimeState* state, int64_t revocable_m
502504void PipelineTask::finalize () {
503505 auto fragment = _fragment_context.lock ();
504506 if (!fragment) {
505- return Status::OK () ;
507+ return ;
506508 }
509+ SCOPED_SWITCH_THREAD_MEM_TRACKER_LIMITER (fragment->get_query_ctx ()->query_mem_tracker );
507510 std::unique_lock<std::mutex> lc (_dependency_lock);
508511 _finalized = true ;
509512 _sink_shared_state.reset ();
510513 _op_shared_states.clear ();
511514 _le_state_map.clear ();
515+ _block.reset ();
516+ _operators.clear ();
517+ _sink.reset ();
518+ _pipeline.reset ();
512519}
513520
514521Status PipelineTask::close (Status exec_status, bool close_sink) {
@@ -543,7 +550,6 @@ Status PipelineTask::close(Status exec_status, bool close_sink) {
543550}
544551
545552std::string PipelineTask::debug_string () {
546- std::unique_lock<std::mutex> lc (_dependency_lock);
547553 fmt::memory_buffer debug_string_buffer;
548554
549555 fmt::format_to (debug_string_buffer, " QueryId: {}\n " , print_id (_query_id));
@@ -560,6 +566,7 @@ std::string PipelineTask::debug_string() {
560566 auto * cur_blocked_dep = _blocked_dep;
561567 auto fragment = _fragment_context.lock ();
562568 if (is_finalized () || !fragment) {
569+ fmt::format_to (debug_string_buffer, " pipeline name = {}" , _pipeline_name);
563570 return fmt::to_string (debug_string_buffer);
564571 }
565572 auto elapsed = fragment->elapsed_time () / NANOS_PER_SEC;
0 commit comments