节俭电话给出“未知结果”

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。感谢您的快速帮助。

以上是关于节俭电话给出“未知结果”的主要内容,如果未能解决你的问题,请参考以下文章

电话聊天狂人

7-14 电话聊天狂人

5-14 电话聊天狂人 (25分)

7-113 电话聊天狂人 (25分)

7-14 电话聊天狂人(25 分)

11-散列1 电话聊天狂人 (25 分)