From 9edc5b974c175e366e7b33ba9d02a255a8c7f6c8 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/exec/operator/materialization_opertor.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/be/src/exec/operator/materialization_opertor.cpp b/be/src/exec/operator/materialization_opertor.cpp index 17ea2664e0ff01..f2349476e4f4df 100644 --- a/be/src/exec/operator/materialization_opertor.cpp +++ b/be/src/exec/operator/materialization_opertor.cpp @@ -424,6 +424,12 @@ Status MaterializationOperator::push(RuntimeState* state, Block* in_block, bool " 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(); }