diff --git a/src/sql/engine/px/ob_px_rpc_processor.cpp b/src/sql/engine/px/ob_px_rpc_processor.cpp index 38fbee83dd..9566c883f7 100644 --- a/src/sql/engine/px/ob_px_rpc_processor.cpp +++ b/src/sql/engine/px/ob_px_rpc_processor.cpp @@ -265,7 +265,7 @@ void ObFastInitSqcReportQCMessageCall::operator()(hash::HashMapPairis_ignore_vtable_error() && err_ != OB_SUCCESS) { + if (sqc_->is_ignore_vtable_error() && err_ != OB_SUCCESS && err_ != OB_TIMEOUT) { // 当该SQC是虚拟表查询时, 调度RPC失败时需要忽略错误结果. // 并mock一个sqc finsh msg发送给正在轮询消息的PX算子 // 此操作已确认是线程安全的. diff --git a/src/sql/engine/px/ob_px_task_process.cpp b/src/sql/engine/px/ob_px_task_process.cpp index ebc5366c91..8135d384f1 100644 --- a/src/sql/engine/px/ob_px_task_process.cpp +++ b/src/sql/engine/px/ob_px_task_process.cpp @@ -463,7 +463,8 @@ int ObPxTaskProcess::do_process() // nop } else if (IS_INTERRUPTED()) { //当前是被QC中断的,不再向QC发送中断,退出即可。 - } else if (arg_.get_sqc_handler()->get_sqc_init_arg().sqc_.is_ignore_vtable_error()) { + } else if (ret != OB_TIMEOUT && + arg_.get_sqc_handler()->get_sqc_init_arg().sqc_.is_ignore_vtable_error()) { // 忽略虚拟表错误 } else { (void) ObInterruptUtil::interrupt_qc(arg_.task_, ret);