[ 
https://issues.apache.org/jira/browse/IO-259?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Niall Pemberton resolved IO-259.
--------------------------------

       Resolution: Fixed
    Fix Version/s: 2.1
         Assignee: Niall Pemberton

Good suggestions - I added a stop(long) method and if you specify a negative 
value it stops immediately.

http://svn.apache.org/viewvc?view=revision&revision=1080843

> FileAlterationMonitor.stop(boolean allowIntervalToFinish)
> ---------------------------------------------------------
>
>                 Key: IO-259
>                 URL: https://issues.apache.org/jira/browse/IO-259
>             Project: Commons IO
>          Issue Type: Improvement
>            Reporter: Dan Checkoway
>            Assignee: Niall Pemberton
>             Fix For: 2.1
>
>         Attachments: IO-259.patch
>
>
> I'm a long-time user of commons-io, but I just started using 
> FileAlterationMonitor the other day.  I have a bean in a Spring application 
> context that constructs a FileAlterationMonitor, and it sets the 
> ThreadFactory to an instance that creates daemon threads.  At context 
> shutdown, my bean calls .stop() on the monitor.
> The problem is that .stop() currently honors the Thread.sleep(interval), in 
> that it does a nice friendly thread.join().  If you set your interval high 
> enough, your "graceful app shutdown" is going to sit there waiting a while.
> Compounding things is that I have *seven* FileAlterationMonitors in my app, 
> all of which run with a 10-second sleep time.  So at graceful shutdown time, 
> I'm facing a delay of up to 70 seconds...lame!
> So I stopped calling .stop() and since the ThreadFactory created daemon 
> threads, shutdown is quick.  But...
> I'm running inside tomcat, and when it shuts down it looks for leaks.  And of 
> course it finds a handful of my threads and complains, such as:
> SEVERE: The web application [/my-webapp] appears to have started a thread 
> named [FileUpdateMonitor-/path/to/my/file.ext] but has failed to stop it. 
> This is very likely to create a memory leak.
> So what I'm suggesting is an alternate version of 
> FileAlterationMonitor.stop() that takes "boolean allowIntervalToFinish".  The 
> default behavior won't change (for backward compatibility).  But if you 
> explicitly call .stop(false), then it will interrupt the sleeping thread 
> immediately.  That thread wakes up, sees that running=false, and finishes up 
> immediately.
> Patch will be attached in a sec...

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to