[enhancement](cancel) add cancel query ability on be

This commit is contained in:
yiguolei
2024-06-03 11:43:57 +08:00
parent f03cee5e30
commit c033c71aed

View File

@ -582,7 +582,23 @@ void PInternalServiceImpl::cancel_plan_fragment(google::protobuf::RpcController*
Status st = Status::OK();
const bool has_cancel_reason = request->has_cancel_reason();
if (request->has_fragment_id()) {
// KILL QUERY need send query directly to BE ignore the fragmentid or fragment instance id.
// Actully, not need check fragmentid, but should keep stable on 2.1, so that only call
// cancel_query when queryid is set and fragment id not set.
if (request->has_query_id() && !request->has_fragment_id()) {
TUniqueId query_id;
query_id.__set_hi(request->query_id().hi());
query_id.__set_lo(request->query_id().lo());
LOG(INFO) << fmt::format(
"Cancel query {}, reason: {}", print_id(query_id),
has_cancel_reason ? PPlanFragmentCancelReason_Name(request->cancel_reason())
: "INTERNAL_ERROR");
_exec_env->fragment_mgr()->cancel_query(
query_id,
has_cancel_reason ? request->cancel_reason()
: PPlanFragmentCancelReason::INTERNAL_ERROR,
"cancel query from FE");
} else if (request->has_fragment_id()) {
TUniqueId query_id;
query_id.__set_hi(request->query_id().hi());
query_id.__set_lo(request->query_id().lo());