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

Colin Patrick McCabe commented on HADOOP-9703:
----------------------------------------------

Thanks for tackling this JIRA.  The logic looks OK.

I think it would be better to create a static object which handles all of this 
for you.

For example you could have 
{code}
private static final ClientExecutorServiceFactory = 
    new ClientExecutorServiceFactory();

private static class ClientExecutorServiceFactory {
    synchronized ExecutorService ref() { ... }
    synchronized ExecutorService unref() { ... }
};
{code}

ref manages incrementing the reference count and unref manages decrementing it.

This avoids the findbugs warning, and avoids having to document what locks have 
to be taken where (because ClientExecutorServiceFactory handles that for you)
                
> org.apache.hadoop.ipc.Client leaks threads on stop.
> ---------------------------------------------------
>
>                 Key: HADOOP-9703
>                 URL: https://issues.apache.org/jira/browse/HADOOP-9703
>             Project: Hadoop Common
>          Issue Type: Bug
>            Reporter: Mark Miller
>            Assignee: Tsuyoshi OZAWA
>            Priority: Minor
>         Attachments: HADOOP-9703.1.patch
>
>
> org.apache.hadoop.ipc.Client#stop says "Stop all threads related to this 
> client." but does not shutdown the static SEND_PARAMS_EXECUTOR, so usage of 
> this class always leaks threads rather than cleanly closing or shutting down.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to