From cc047c03b38269930e826ecc149b5c79ddb78d90 Mon Sep 17 00:00:00 2001 From: luoluoyuyu Date: Fri, 20 Mar 2026 13:15:55 +0800 Subject: [PATCH] Add optional responseData to TSStatus and RpcUtils helpers - Extend TSStatus Thrift struct with optional binary responseData field - Add getStatus overloads in RpcUtils for status with message and payload Made-with: Cursor --- .../java/org/apache/iotdb/rpc/RpcUtils.java | 33 +++++++++++++++++++ .../src/main/thrift/common.thrift | 1 + 2 files changed, 34 insertions(+) diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/RpcUtils.java b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/RpcUtils.java index 7a7c7a5ed4429..a4cc34a81b9d6 100644 --- a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/RpcUtils.java +++ b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/RpcUtils.java @@ -30,6 +30,7 @@ import org.slf4j.LoggerFactory; import java.lang.reflect.Proxy; +import java.nio.ByteBuffer; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.time.Instant; @@ -221,6 +222,38 @@ public static TSStatus getStatus(int code, String message) { return status; } + /** + * Build a {@link TSStatus} with code, optional message and optional binary payload (Thrift {@code + * binary} maps to {@link ByteBuffer}). + * + * @param tsStatusCode status code + * @param message optional message; if null, message field is left unset + * @param responseData optional serialized payload; if null, responseData field is left unset + */ + public static TSStatus getStatus( + final TSStatusCode tsStatusCode, final String message, final ByteBuffer responseData) { + return getStatus(tsStatusCode.getStatusCode(), message, responseData); + } + + /** + * Build a {@link TSStatus} with code, optional message and optional binary payload. + * + * @param code status code + * @param message optional message; if null, message field is left unset + * @param responseData optional serialized payload; if null, responseData field is left unset + */ + public static TSStatus getStatus( + final int code, final String message, final ByteBuffer responseData) { + final TSStatus status = new TSStatus(code); + if (message != null) { + status.setMessage(message); + } + if (responseData != null) { + status.setResponseData(responseData); + } + return status; + } + public static TSExecuteStatementResp getTSExecuteStatementResp(TSStatusCode tsStatusCode) { TSStatus status = getStatus(tsStatusCode); return getTSExecuteStatementResp(status); diff --git a/iotdb-protocol/thrift-commons/src/main/thrift/common.thrift b/iotdb-protocol/thrift-commons/src/main/thrift/common.thrift index d1db4cf609060..c0f4cf4f6653a 100644 --- a/iotdb-protocol/thrift-commons/src/main/thrift/common.thrift +++ b/iotdb-protocol/thrift-commons/src/main/thrift/common.thrift @@ -34,6 +34,7 @@ struct TSStatus { 3: optional list subStatus 4: optional TEndPoint redirectNode 5: optional bool needRetry + 6: optional binary responseData } enum TConsensusGroupType {