Skip to content

Commit c9066c7

Browse files
authored
Add optional responseData to TSStatus and RpcUtils helpers (#17328)
- Extend TSStatus Thrift struct with optional binary responseData field - Add getStatus overloads in RpcUtils for status with message and payload Made-with: Cursor
1 parent f7b7088 commit c9066c7

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

  • iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc
  • iotdb-protocol/thrift-commons/src/main/thrift

iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/RpcUtils.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.slf4j.LoggerFactory;
3131

3232
import java.lang.reflect.Proxy;
33+
import java.nio.ByteBuffer;
3334
import java.sql.Timestamp;
3435
import java.text.SimpleDateFormat;
3536
import java.time.Instant;
@@ -221,6 +222,38 @@ public static TSStatus getStatus(int code, String message) {
221222
return status;
222223
}
223224

225+
/**
226+
* Build a {@link TSStatus} with code, optional message and optional binary payload (Thrift {@code
227+
* binary} maps to {@link ByteBuffer}).
228+
*
229+
* @param tsStatusCode status code
230+
* @param message optional message; if null, message field is left unset
231+
* @param responseData optional serialized payload; if null, responseData field is left unset
232+
*/
233+
public static TSStatus getStatus(
234+
final TSStatusCode tsStatusCode, final String message, final ByteBuffer responseData) {
235+
return getStatus(tsStatusCode.getStatusCode(), message, responseData);
236+
}
237+
238+
/**
239+
* Build a {@link TSStatus} with code, optional message and optional binary payload.
240+
*
241+
* @param code status code
242+
* @param message optional message; if null, message field is left unset
243+
* @param responseData optional serialized payload; if null, responseData field is left unset
244+
*/
245+
public static TSStatus getStatus(
246+
final int code, final String message, final ByteBuffer responseData) {
247+
final TSStatus status = new TSStatus(code);
248+
if (message != null) {
249+
status.setMessage(message);
250+
}
251+
if (responseData != null) {
252+
status.setResponseData(responseData);
253+
}
254+
return status;
255+
}
256+
224257
public static TSExecuteStatementResp getTSExecuteStatementResp(TSStatusCode tsStatusCode) {
225258
TSStatus status = getStatus(tsStatusCode);
226259
return getTSExecuteStatementResp(status);

iotdb-protocol/thrift-commons/src/main/thrift/common.thrift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ struct TSStatus {
3434
3: optional list<TSStatus> subStatus
3535
4: optional TEndPoint redirectNode
3636
5: optional bool needRetry
37+
6: optional binary responseData
3738
}
3839

3940
enum TConsensusGroupType {

0 commit comments

Comments
 (0)