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

Gary D. Gregory commented on IO-889:
------------------------------------

I see a failure on Windows. I disabled the test on Windows in the PR to see 
what happens on all other Linux and macOS builds.

> Tailer.close() does not guarantee file close
> --------------------------------------------
>
>                 Key: IO-889
>                 URL: https://issues.apache.org/jira/browse/IO-889
>             Project: Commons IO
>          Issue Type: Bug
>          Components: Utilities
>    Affects Versions: 2.21.0
>         Environment: Windows
>            Reporter: Ilya Basin
>            Priority: Major
>         Attachments: TailerCloseTest.java
>
>
> On Windows after Tailer.close() the watched file cannot be moved or deleted 
> immediately and Tailer does not provide any additional means to wait for the 
> submitted executor task. I believe that when no custom executor or thread is 
> used there still should be a way to wait with desired timeout. I understand 
> that close() isn't the perfect method for waiting. How about extending Tailer 
> from FutureTask?
> My current workaround is to avoid using executors and just create 
> java.lang.Thread and call Thread.join() afterwards.
> Attached a test case: [^TailerCloseTest.java]
> ^Expected: test succeeds^
> ^Actual: Files.delete() fails^
>  
> {code:java}
> java.nio.file.FileSystemException: 
> C:\Users\basin\AppData\Local\Temp\TailerTestFile551954280413046718.log: The 
> process cannot access the file because it is being used by another process.
>     at 
> java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:92)
>     at 
> java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
>     at 
> java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108)
>     at 
> java.base/sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:274)
>     at 
> java.base/sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:105)
>     at java.base/java.nio.file.Files.delete(Files.java:1142)
>     at 
> org.apache.commons.io.input.TailerCloseTest.testCloseTailer(TailerCloseTest.java:60)
>     at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>     at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
>     at java.base/java.util.ArrayList.forEach(ArrayList.java:1541){code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to