thrift写程序时的小问题定位
在这个公司没像以前用thrift多了,最近有需求,直接撸了一串小代码
thrift+zk简单来个服务发现+加权的负载均衡+支持客户端长链接复用+支持客户端每一个请求一个长链接(连接池)+简单的实时统计
到了我这年纪,写代码越来越喜欢少debug,尽量在写的时候就能跑起来,剩下的就是压测+调优.
但是是一个小手抖,遇见了个小问题,
问题的描述:
写完代码跑的时候,总是服务端提示无法解析之类的,凭感觉,我修改了代码就正确了,但是想弄个究竟.我把这个先弄成JSON,毕竟二进制的不好读
日志报错如下:
解决问题想走两种
1 直接抓包,感觉长度和预期的不正常
于是请出大神Wireshark+npcap
C4-C0=4,这就是关键
2 源码分析
再对照代码一看,是当时手一哆嗦,用于扩展
我而我错误的代码当时手抖写成了
TFramedTransport的时候在外面弄了一下导致的,一般来说,这个不会出问题,但是上面的代码在flush的时候,是进一步调用transport_flush,于是相当于做了两次TFramedTransport,于是就多出来了4个字节
所以代码改成