[ 
https://issues.apache.org/jira/browse/HBASE-16389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15416622#comment-15416622
 ] 

Hudson commented on HBASE-16389:
--------------------------------

FAILURE: Integrated in HBase-Trunk_matrix #1394 (See 
[https://builds.apache.org/job/HBase-Trunk_matrix/1394/])
HBASE-16389 Thread leak in CoprocessorHost#getTable(TableName) API (tedyu: rev 
9e116e048b91ee2fef056e4140cb4091a7fd8425)
* 
hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java


> Thread leak in CoprocessorHost#getTable(TableName) API
> ------------------------------------------------------
>
>                 Key: HBASE-16389
>                 URL: https://issues.apache.org/jira/browse/HBASE-16389
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Ankit Singhal
>            Assignee: Ankit Singhal
>             Fix For: 2.0.0
>
>         Attachments: HBASE-16389.patch
>
>
> 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)

Reply via email to