hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ankit Singhal (JIRA)" <j...@apache.org>
Subject [jira] [Created] (HBASE-16389) Thread leak in CoprocessorHost#getTable(TableName tableName)
Date Wed, 10 Aug 2016 15:11:20 GMT
Ankit Singhal created HBASE-16389:

             Summary: Thread leak in CoprocessorHost#getTable(TableName tableName)
                 Key: HBASE-16389
                 URL: https://issues.apache.org/jira/browse/HBASE-16389
             Project: HBase
          Issue Type: Bug
            Reporter: Ankit Singhal

There is a thread leak in below method, we are creating a default pool while calling 
    public HTableInterface getTable(TableName tableName) throws IOException {
      return this.getTable(tableName, HTable.getDefaultExecutor(getConfiguration()));

which will never be shutdown because in HTable,   we are setting this.cleanupPoolOnClose to

  public HTable(TableName tableName, final ClusterConnection connection,
      final TableConfiguration tableConfig,
      final RpcRetryingCallerFactory rpcCallerFactory,
      final RpcControllerFactory rpcControllerFactory,
      final ExecutorService pool) throws IOException {
    if (connection == null || connection.isClosed()) {
      throw new IllegalArgumentException("Connection is null or closed.");
    this.tableName = tableName;
    this.cleanupConnectionOnClose = false;
    this.connection = connection;
    this.configuration = connection.getConfiguration();
    this.tableConfiguration = tableConfig;
    this.pool = pool;
    if (pool == null) {
      this.pool = getDefaultExecutor(this.configuration);
      this.cleanupPoolOnClose = true;
    } else {
      this.cleanupPoolOnClose = false;

resulted in pool to stay forever ,which eventually can lead other processes or the same process
to starve for a threads.

This message was sent by Atlassian JIRA

View raw message