问题现象

在使用kylin2.6.6+hbase2.2.3中

服务端出现大量如下警告:

TRACE [handler=88] ipc.RpcServer: called: 165045 service :ClientService 
methodName: Mutate size……




WARN[handler=88] regionserver.MultiVersionConcurrencyControl:  STUCK:  
MultiVersionConcurrencyControl{readPoint=1090,writePoint=1093}




之后持续打印上述WARN STUCK 日志几个小时,执行多次后jstack后重启了rs。




在jstack中
AsyncFSWAL-0 线程 

State: WAITING 

at Java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)




handler88线程 

State: TIME_WAITING

at 
org.apache.hadoop.hbase.regionservser.MultiVersionConcurrencyControl.waitForRead(MultiVersionConcurrencyControl.java:232)




在客服端-kylin
发起请求第一次报错

CallTimeoutException: Call id=165045

at org.apache.hadoop.hbase.client.HTable.checkAndPut(Table.java:1261)

客户端重试报错

ioexception: Timed out waiting for lock for row:xxx in region xxxxxxx

at 
org.apache.hadoop.hbase.regionserver.HRegion.getRowLockInternal(Region.java:5937)

之后多次重试报同样的错误







我的理解

从Jstack中可知,AsyncFSWAL线程阻塞在LinkedBlockingQueue.take方法,队列应该为空
从客户端重试日志和jstack可知,handler88线程并未释放行锁,并且阻塞在MultiVersionConcurrencyControl.waitForRead方法上,写入操作似乎没有完成写WAL,与1矛盾!
MVCC readpoint长时间卡在1090,是否可以反证想法1?
Kylin使用hbase-client-1.4.9.jar,并且每次出现上述问题均是从checkAndPut方法进入,版本兼容性?







疑惑

AsyncFSWAL与handler两个线程进了死循环,似乎是丢失了数据?

Reply via email to