[hibernate-issues] [Hibernate-JIRA] Commented: (HSEARCH-492) FSMasterDirectoryProvider and FSSlaveDirectoryProvider don't shutdown the Executor
Emmanuel Bernard (JIRA)
noreply at atlassian.com
Thu Apr 8 04:29:44 EDT 2010
[ http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-492?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=36253#action_36253 ]
Emmanuel Bernard commented on HSEARCH-492:
------------------------------------------
yes. And if people complain too much, we will revisit.
> FSMasterDirectoryProvider and FSSlaveDirectoryProvider don't shutdown the Executor
> ----------------------------------------------------------------------------------
>
> Key: HSEARCH-492
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HSEARCH-492
> Project: Hibernate Search
> Issue Type: Bug
> Components: directory provider
> Affects Versions: 3.1.1.GA
> Environment: Java 1.6.0
> Reporter: Sylvain Charton
> Assignee: Sanne Grinovero
> Priority: Minor
> Fix For: 3.2.0.CR1
>
>
> I'm using Hibernate Search clustering feature in a stand alone Java application (not a webapp).
> My problem is the application never stops: many threads are still living.
> Both FSMasterDirectoryProvider and FSSlaveDirectoryProvider use a Single Thread Executor to perform the CopyTask.
> When the FSSlaveDirectoryProvider.stop() is called, the timer is stopped, but not the Executor in the TimerTask.
> Consequence is the process can't stop, because some threads are still living, endlessly.
> This happens after the first CopyDirectory task was executed.
> My fix was to copy this class in my code, and replace the Executor in TriggerTask class by an ExecutorService in FSSlaveDirectoryProvider class.
> The ExecutorService is initialized in the start() method:
> {code:Java}this.executor = Executors.newSingleThreadExecutor() ;{code}
> And properly shut down in the stop() method:
> {code:java}
> executor.shutdown();
> boolean terminated = false ;
> try{
> terminated = executor.awaitTermination(20, TimeUnit.SECONDS);
> } catch (InterruptedException e1) {
> terminated = false ;
> }
> if (!terminated) {
> executor.shutdownNow() ;
> }
> {code}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list