问题现象 在使用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两个线程进了死循环,似乎是丢失了数据?