You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Sergey Shelukhin (JIRA)" <ji...@apache.org> on 2019/04/29 22:23:00 UTC

[jira] [Created] (HBASE-22334) handle blocking RPC threads better (time out calls? )

Sergey Shelukhin created HBASE-22334:
----------------------------------------

             Summary: handle blocking RPC threads better (time out calls? )
                 Key: HBASE-22334
                 URL: https://issues.apache.org/jira/browse/HBASE-22334
             Project: HBase
          Issue Type: Bug
            Reporter: Sergey Shelukhin


Combined with HBASE-22333, we had the case where user sent lots of create table requests with pre-split for the same table (because the tasks of some job would try to create table opportunistically if it doesn't exist, and there were many such tasks); these requests took up all the RPC threads and caused large call queue to form; then, the first call got stuck because RS calls to report an opened region were stuck in queue. All the other calls were stuck here:
{noformat}
          submitProcedure(
            new CreateTableProcedure(procedureExecutor.getEnvironment(), desc, newRegions, latch));
          latch.await();
{noformat}

The procedures in this case were stuck for hours; even if the other issue was resolved, assigning 1000s of regions can take a long time and cause lots of delay before it unblocks the the other procedures and allows them to release the latch.

In general, waiting on RPC thread is not a good idea. I wonder if it would make sense to fail client requests taking up the RPC thread based on timeout; or if they are not making progress (e.g. in this case, the procedure is not getting updated; might need to be handled on case by case basis).





--
This message was sent by Atlassian JIRA
(v7.6.3#76005)