| 676 | } |
| 677 | |
| 678 | void ClientRequestState::FinishExecQueryOrDmlRequest() { |
| 679 | const TExecRequest& exec_req = exec_request(); |
| 680 | DCHECK(exec_req.__isset.query_exec_request); |
| 681 | UniqueIdPB query_id_pb; |
| 682 | TUniqueIdToUniqueIdPB(query_id(), &query_id_pb); |
| 683 | |
| 684 | if (otel_trace_query() && !IsCTAS()) { |
| 685 | otel_trace_manager_->StartChildSpanAdmissionControl(); |
| 686 | } |
| 687 | |
| 688 | TQueryExecRequest req; |
| 689 | req = exec_req.query_exec_request; |
| 690 | req.query_ctx.client_request.query_options = exec_req.query_options; |
| 691 | if (ExecEnv::GetInstance()->AdmissionServiceEnabled()) { |
| 692 | if (req.__isset.query_plan) { |
| 693 | // Use the swap() to ensure the string's memory is deallocated. |
| 694 | // Using clear() sets the size to 0 but may not release the capacity. |
| 695 | std::string().swap(req.query_plan); |
| 696 | req.__isset.query_plan = false; |
| 697 | } |
| 698 | if (req.__isset.lineage_graph) { |
| 699 | req.lineage_graph = TLineageGraph(); |
| 700 | req.__isset.lineage_graph = false; |
| 701 | } |
| 702 | if (req.__isset.result_set_metadata) { |
| 703 | req.result_set_metadata = TResultSetMetadata(); |
| 704 | req.__isset.result_set_metadata = false; |
| 705 | } |
| 706 | if (req.__isset.finalize_params) { |
| 707 | req.finalize_params = TFinalizeParams(); |
| 708 | req.__isset.finalize_params = false; |
| 709 | } |
| 710 | TClientRequest& client_req = req.query_ctx.client_request; |
| 711 | if (client_req.__isset.redacted_stmt) { |
| 712 | // Use the swap() to ensure the string's memory is deallocated. |
| 713 | std::string().swap(client_req.redacted_stmt); |
| 714 | client_req.__isset.redacted_stmt = false; |
| 715 | } |
| 716 | } |
| 717 | |
| 718 | DCHECK(!admission_exec_request_); |
| 719 | admission_exec_request_ = std::make_unique<AdmissionExecRequestUncompressed>(&req); |
| 720 | Status admit_status = admission_control_client_->SubmitForAdmission( |
| 721 | {query_id_pb, ExecEnv::GetInstance()->backend_id(), *admission_exec_request_, |
| 722 | summary_profile_, blacklisted_executor_addresses_}, |
| 723 | query_events_, &schedule_, &wait_start_time_ms_, &wait_end_time_ms_, |
| 724 | otel_trace_manager_.get()); |
| 725 | |
| 726 | if (otel_trace_query() && !IsCTAS()) { |
| 727 | otel_trace_manager_->EndChildSpanAdmissionControl(admit_status); |
| 728 | } |
| 729 | |
| 730 | { |
| 731 | lock_guard<mutex> l(lock_); |
| 732 | if (!UpdateQueryStatus(admit_status).ok()) return; |
| 733 | } |
| 734 | |
| 735 | // Don't start the query execution span for the insert portion of a CTAS query since it |
nothing calls this directly
no test coverage detected