gpt4 book ai didi

spring - grpc状态未从服务器拦截器发送到客户端

转载 作者:行者123 更新时间:2023-12-03 07:51:48 25 4
gpt4 key购买 nike

在grpc服务器拦截器中,我想捕获异常并将完整的堆栈跟踪发送到客户端。

public void onHalfClose() {
try {
super.onHalfClose();
} catch (Exception ex) {
handleException(ex);
throw ex;
}
}


private void handleException(Exception exception) {
var status = Status.fromThrowable(exception);
// status.cause has the full stack trace now
// Add requestHeaders with new metadata.
call.close(status, requestHeaders);
}
在客户端,我有一个 ClientInterceptor,它拦截了 OnClose()
@Override
public void onClose(Status status, Metadata requestHeaders) {
// status is different, requestHeaders include the added info
super.onClose(status, requestHeaders);
}
我可以接收 header ,但不能接收状态。我可以在一个 header 中将整个堆栈跟踪复制为字符串,但是它存在 header 大小限制为8K的问题,这不足以应付我在应用程序中获得的超长堆栈跟踪。

最佳答案

Status的原因删除,并将not serialized and sent发送给客户端。仅发送状态代码及其描述。因此,您将永远不会收到stacktrace。
如果要保留状态描述并将其发送到客户端,则可以使用stacktrace字符串( Status.augmentDescription )来扩充Status描述。
但是无论如何,所有状态信息都会在响应预告片中序列化,这需要符合8 KB的大小限制。无论stacktrace嵌入在哪里。

关于spring - grpc状态未从服务器拦截器发送到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63993722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com