[fix](memory) query check cancel while waiting for memory in Allocator, and optimize log (#19967)

After the query check process memory exceed limit in Allocator, it will wait up to 5s.
Before, Allocator will not check whether the query is canceled while waiting for memory, this causes the query to not end quickly.
This commit is contained in:
Xinyi Zou
2023-05-24 11:08:48 +08:00
committed by GitHub
parent 08ec5e2eb5
commit cf7a74f6ec
5 changed files with 46 additions and 27 deletions

View File

@ -20,7 +20,6 @@
#include "common/signal_handler.h"
#include "runtime/runtime_state.h"
#include "util/doris_metrics.h" // IWYU pragma: keep
#include "util/uid_util.h"
namespace doris {
class MemTracker;
@ -33,15 +32,14 @@ ThreadContextPtr::ThreadContextPtr() {
}
AttachTask::AttachTask(const std::shared_ptr<MemTrackerLimiter>& mem_tracker,
const std::string& task_id, const TUniqueId& fragment_instance_id) {
const TUniqueId& task_id, const TUniqueId& fragment_instance_id) {
thread_context()->attach_task(task_id, fragment_instance_id, mem_tracker);
}
AttachTask::AttachTask(RuntimeState* runtime_state) {
doris::signal::query_id_hi = runtime_state->query_id().hi;
doris::signal::query_id_lo = runtime_state->query_id().lo;
thread_context()->attach_task(print_id(runtime_state->query_id()),
runtime_state->fragment_instance_id(),
thread_context()->attach_task(runtime_state->query_id(), runtime_state->fragment_instance_id(),
runtime_state->query_mem_tracker());
}