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 {code} @Override public HTableInterface getTable(TableName tableName) throws IOException { return this.getTable(tableName, HTable.getDefaultExecutor(getConfiguration())); } {code} which will never be shutdown because in HTable, we are setting this.cleanupPoolOnClose to false {code} @InterfaceAudience.Private 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; } {code} 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 (v6.3.4#6332)