Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Won't Fix
-
0.20.1, 0.90.0
-
None
-
None
-
None
Description
From Tatsuya Kawano up on hbase-user@
50 client threads who try to put millions of records, autoFlush(false), flushCommits() on every 5,000 put. After inserting about 3 million records, a deadlock occurred on a region server who has both the table and index regions loaded.
I have attached a full thread dump of the deadlocked region server, and you can see IPC Server handlers are blocked in org.apache.hadoop.hbase.regionserver.tableindexed.IndexedRegion.updateIndex().
I found the flowing FIXME comment on updateIndex() method, and it seems this is the deadlock I'm having.
// FIXME: This call takes place in an RPC, and requires an RPC. This makes for // a likely deadlock if the number of RPCs we are trying to serve is >= the // number of handler threads. private void updateIndex(IndexSpecification indexSpec, byte[] row, SortedMap<byte[], byte[]> columnValues) throws IOException {I use HBase 0.20.1 and my region servers were running with 10 RPC handler threads on each (default).
Maybe you can workaround this by adding more RPC handlers (increase the value of "hbase.regionserver.handler.count" in hbase-site.xml)
Opening this issue to track the FIXME.
Attachments
Attachments
Issue Links
- is related to
-
HBASE-2182 rpc/ipc refactor; x-version compatibility, nio, async, enveloping, sane timeouts, etc.
- Closed