节俭电话给出“未知结果”
Posted
技术标签:
【中文标题】节俭电话给出“未知结果”【英文标题】:Thrift call gives "unknown result" 【发布时间】:2014-02-27 22:37:13 【问题描述】:我在远程服务器和 Web 服务之间有一个 Thrift 连接。thrift 接口是使用 0.9.0 thrift 编译器编译的。当我对远程服务器进行节俭调用时,它在远程成功执行,但在客户端 - 我看到以下错误:
org.apache.thrift.TApplicationException:PredictScoresNoPersist 失败:未知结果
我检查了网络,并检查了所有提到的解决方案——比如节俭罐中的不匹配等等。还没有运气。请帮忙。
只是一点背景知识,这是一个单线程 REST 客户端。
【问题讨论】:
显而易见的原因是,对 PredictScoresNoPersist() 方法的调用失败并出现异常,该异常未在服务 IDL 中列出(这并不难,因为在那个特定的 cxase 中,有只是没有:github.com/sgdheeban/te/blob/master/ITargetingEngine.thrift)。不那么明显的问题是,是什么导致服务器失败。对我来说,这听起来不像是 Thrift 问题。 【参考方案1】:异常显然是在客户端抛出的,因此消息响应似乎正确传输:
public Map<String,Double> recv_PredictScoresNoPersist() throws org.apache.thrift.TException
PredictScoresNoPersist_result result = new PredictScoresNoPersist_result();
receiveBase(result, "PredictScoresNoPersist");
if (result.isSetSuccess())
return result.success;
throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "PredictScoresNoPersist failed: unknown result");
我看到的唯一两个可能的原因是:
服务器抛出(未捕获的)异常 您尝试返回null
结果,这在 Thrift 中是非法的。
【讨论】:
+1 ^^ :正在传递一个空引用。刚发现bug。感谢您的快速帮助。以上是关于节俭电话给出“未知结果”的主要内容,如果未能解决你的问题,请参考以下文章