IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    thrift版本升级调查记录

    五四陈科学院发表于 2014-05-28 16:59:27
    love 0

    以下内容由[五四陈科学院]提供

    自从0.5.0之后,很长时间thrift的版本都没有动,后来似乎是换了一波人,把java代码部分接口层变动太多,以致于,在0.5.0和其他版本共同存在的情况下,问题较多,54chen特作调查,调查目标0.5.0 vs 0.9.1。

    代码位置:https://github.com/54chen/thrift_test

    第一轮:编译阶段

    1.jar包为0.9.1的libthrift,cli为0.5.0的thrift。

    gen-java生成,编译失败。

    2.修正为0.9.1 libthrift和thrift cli。

    gen-java生成,编译成功。

    3.修正为0.5.0 libthrift和thrift cli。

    gen-java生成,编译成功。

    第二轮:交叉调用

    • client 0.9.1 –> server 0.5.0 一切正常
    • client 0.5.0 –> server 0.9.1 一切正常

    第三轮:server包不对

    • server0.9.1 替换jar为0.5.0 libthrift : server启动失败 Caused by: java.lang.ClassNotFoundException: org.apache.thrift.TBaseProcessor
    • server0.5.0 替换jar为0.9.1 libthrift : server启动失败 java.lang.NoSuchMethodError: org.apache.thrift.server.TThreadPoolServer

    第四轮:client包不对

    • client0.9.1 jar为0.5.0 : client启动失败 java.lang.IncompatibleClassChangeError: class com.xiaomi.miliao.thrift.Hello$Client has interface org.apache.thrift.TServiceClient as super class
    • client0.5.0 jar为0.9.1 : client启动失败 java.lang.IncompatibleClassChangeError: Implementing class

    结论党

    • thrift协议层不会有因为thrift升级而造成的版本的问题。
    • thrift多个版本的client无法同时存在。
    • thrift多个版本的server也无法同时存在。

    测试代码位置:https://github.com/54chen/thrift_test


    想快点找到作者也可以到Twitter上留言: @54chen
    或者你懒得带梯子上墙,请到新浪微博:@54chen


沪ICP备19023445号-2号
友情链接