[ https://issues.apache.org/jira/browse/HBASE-14359?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Victor Xu updated HBASE-14359: ------------------------------ Attachment: HBASE-14359-branch-1-v1.patch HBASE-14359-master-v1.patch Resubmit patches for master and branch-1. > HTable#close will hang forever if unchecked error/exception thrown in > AsyncProcess#sendMultiAction > -------------------------------------------------------------------------------------------------- > > Key: HBASE-14359 > URL: https://issues.apache.org/jira/browse/HBASE-14359 > Project: HBase > Issue Type: Bug > Affects Versions: 0.98.14, 1.1.2 > Reporter: Yu Li > Assignee: Victor Xu > Attachments: HBASE-14359-0.98-v1.patch, > HBASE-14359-branch-1-v1.patch, HBASE-14359-master-branch1-v1.patch, > HBASE-14359-master-v1.patch > > > Currently in AsyncProcess#sendMultiAction, we only catch the > RejectedExecutionException and let other error/exception go, which will cause > decTaskCounter not invoked. Meanwhile, the recommendation for using HTable is > to close the table in the finally clause, and HTable#close will call > flushCommits and wait until all task done. > The problem is when unchecked error/exception like OutOfMemoryError thrown, > taskSent will never be equal to taskDone, so AsyncProcess#waitUntilDone will > never return. Especially, if autoflush is set thus no data to flush during > table close, there would be no rpc call so rpcTimeOut will not break the > call, and thread will wait there forever. > In our product env, the unchecked error we observed is > "java.lang.OutOfMemoryError: unable to create new native thread", and we > observed the client thread hang for hours -- This message was sent by Atlassian JIRA (v6.3.4#6332)