thrift写程序时的小问题定位

在这个公司没像以前用thrift多了,最近有需求,直接撸了一串小代码

   thrift+zk简单来个服务发现+加权的负载均衡+支持客户端长链接复用+支持客户端每一个请求一个长链接(连接池)+简单的实时统计

到了我这年纪,写代码越来越喜欢少debug,尽量在写的时候就能跑起来,剩下的就是压测+调优.

但是是一个小手抖,遇见了个小问题,

问题的描述:

 写完代码跑的时候,总是服务端提示无法解析之类的,凭感觉,我修改了代码就正确了,但是想弄个究竟.我把这个先弄成JSON,毕竟二进制的不好读

日志报错如下:

thrift写程序时的小问题定位

解决问题想走两种

  1 直接抓包,感觉长度和预期的不正常

     于是请出大神Wireshark+npcap

   thrift写程序时的小问题定位

 C4-C0=4,这就是关键

 2 源码分析

thrift写程序时的小问题定位

再对照代码一看,是当时手一哆嗦,用于扩展

 

我而我错误的代码当时手抖写成了

thrift写程序时的小问题定位

TFramedTransport的时候在外面弄了一下导致的,一般来说,这个不会出问题,但是上面的代码在flush的时候,是进一步调用transport_flush,于是相当于做了两次TFramedTransport,于是就多出来了4个字节

thrift写程序时的小问题定位

所以代码改成

thrift写程序时的小问题定位