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

Colin Patrick McCabe commented on HDFS-7922:
--------------------------------------------

Thanks for looking at this, [~rakeshr].  

* You do not need to check the executors against null, since they are final 
members which are initialized when the object is constructed.  They cannot be 
null.

* I would put the calls to shutdown together before the calls to 
{{awaitTermination}}.

* It looks like there is an existing bug where we try to join the CacheCleaner 
thread (which may require a lock to finish) while holding the lock ourselves.  
The fix is the same... we should join the cache cleaner thread once releasing 
the lock.

* I don't see the need for a separate cleanup and close function.  cleanup is 
only ever called by close and it does the same thing.

> ShortCircuitCache#close is not releasing ScheduledThreadPoolExecutors
> ---------------------------------------------------------------------
>
>                 Key: HDFS-7922
>                 URL: https://issues.apache.org/jira/browse/HDFS-7922
>             Project: Hadoop HDFS
>          Issue Type: Bug
>            Reporter: Rakesh R
>            Assignee: Rakesh R
>         Attachments: 001-HDFS-7922.patch, 002-HDFS-7922.patch, 
> 003-HDFS-7922.patch
>
>
> ShortCircuitCache has the following executors. It would be good to shutdown 
> these pools during ShortCircuitCache#close to avoid leaks.
> {code}
>   /**
>    * The executor service that runs the cacheCleaner.
>    */
>   private final ScheduledThreadPoolExecutor cleanerExecutor
>   = new ScheduledThreadPoolExecutor(1, new ThreadFactoryBuilder().
>           setDaemon(true).setNameFormat("ShortCircuitCache_Cleaner").
>           build());
>   /**
>    * The executor service that runs the cacheCleaner.
>    */
>   private final ScheduledThreadPoolExecutor releaserExecutor
>       = new ScheduledThreadPoolExecutor(1, new ThreadFactoryBuilder().
>           setDaemon(true).setNameFormat("ShortCircuitCache_SlotReleaser").
>           build());
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to