thrift server在执行操作后运行一段时间就会假死。
分析日志,发现出现错误,Can't get the location
原因分析:当空闲的连接从thrift server被清除的时候,该连接之下的table实例依然缓存在线程的local cache中,当再次操作table的时候自然会出现 Can’t get the location 的异常,因为连接早已关闭.
受影响版本:
0.98.13, 1.1.1, 1.0.1.1, 1.1.0.1
已修复版本:
2.0.0, 0.98.14, 1.0.2, 1.2.0, 1.1.2, 1.3.0
Thrift影响:
该Bug出现在Thrift1中,Thrift2没有这个问题
解决方法
替换已修复版本的jar依赖,注意版本兼容问题(例如:v1.1.1的修复参考请替换为v1.1.2)
将hbase-thrift-1.1.2.jar替换hbase-thrift-1.1.1.jar