From 763f277819979a91f2753726e4d2bd0bbb84125b Mon Sep 17 00:00:00 2001 From: HappenLee Date: Thu, 16 Apr 2026 21:21:22 +0800 Subject: [PATCH] [Exec](status) materialization_opertor return the error status by row_id_fetcher (#62513) Problem Summary: - MaterializationOperator did not check rpc_struct.response.status().status_code after row_id_fetcher RPCs, so backend-side errors were not propagated to the caller. - This change verifies the RPC response status; if status_code != 0, it constructs an error message containing backend id, status_code, error_msg and the Materialization Sink node id, and returns Status::InternalError so the error is reported upstream. --- be/src/pipeline/exec/materialization_opertor.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/be/src/pipeline/exec/materialization_opertor.cpp b/be/src/pipeline/exec/materialization_opertor.cpp index 1e3c34aabe89e3..e4a12c202ba935 100644 --- a/be/src/pipeline/exec/materialization_opertor.cpp +++ b/be/src/pipeline/exec/materialization_opertor.cpp @@ -428,6 +428,12 @@ Status MaterializationOperator::push(RuntimeState* state, vectorized::Block* in_ " target_backend_id:" + std::to_string(backend_id); return Status::InternalError(error_text); } + if (rpc_struct.response.status().status_code() != 0) { + Status st = Status::create(rpc_struct.response.status()); + st.append(fmt::format(", Backend:{}, Materialization Sink node id:{}", backend_id, + node_id())); + return st; + } rpc_struct.cntl->Reset(); }