You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Melloware (Jira)" <ji...@apache.org> on 2021/01/07 19:00:00 UTC

[jira] [Commented] (IO-663) FileUtils.copyDirectory(File srcDir, File destDir) fails on Windows

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

Melloware commented on IO-663:
------------------------------

We have a similar issues that only occurs intermittently on Window 10 using FileUtils.copyDirectory getting "java.nio.file.AccessDeniedException".  We have a process that runs every hour and fails every once in a while.   It has been working fine for years on IO 2.6 which used a homegrown doCopyFile method.  Now its using Files.copy() and we see this intermittent error.

Stack Trace:
{code:java}
java.nio.file.AccessDeniedException: .\runtime\test.csv -> .\runtime\copy\test.csv
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source) at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source) at sun.nio.fs.WindowsFileCopy.copy(Unknown Source) at sun.nio.fs.WindowsFileSystemProvider.copy(Unknown Source) at java.nio.file.Files.copy(Unknown Source) at org.apache.commons.io.FileUtils.doCopyFile(FileUtils.java:1392) at org.apache.commons.io.FileUtils.doCopyDirectory(FileUtils.java:1354) at org.apache.commons.io.FileUtils.doCopyDirectory(FileUtils.java:1352) at org.apache.commons.io.FileUtils.copyDirectory(FileUtils.java:733) at org.apache.commons.io.FileUtils.copyDirectory(FileUtils.java:659) at org.apache.commons.io.FileUtils.copyDirectory(FileUtils.java:606) at 
{code}
We switched back to IO 2.6 and everything is working fine.

> FileUtils.copyDirectory(File srcDir, File destDir) fails on Windows
> -------------------------------------------------------------------
>
>                 Key: IO-663
>                 URL: https://issues.apache.org/jira/browse/IO-663
>             Project: Commons IO
>          Issue Type: Bug
>            Reporter: Elliotte Rusty Harold
>            Priority: Critical
>
> This bug is shared (likely because of code copied from one place to another) between the similar methods in commons IO, codehaus-plexus-utils, and maven-shared-utils.
> I don't have an isolated test case because this bug is platform specific and I've only seen it in Travis CI builds on Windows using JDK 7 through 15. I don't have a Windows system handy to test it. However it is reproducible.
> Typical code that triggers it is in RestoreBackupPomsPhaseTest in maven-release:
> {{// copy poms so tests are valid without clean}}
> {{  File sourceDir = getTestFile( "src/test/resources" + projectPath );}}
> {{  File testDir = getTestFile( "target/test-classes" + projectPath );}}
> {{  FileUtils.copyDirectoryStructure( sourceDir, testDir );}}
> I don't know whether there might be something weird in the setup of those two directories that's involved.
> Typical error message is:
> Caused by: java.nio.file.FileSystemException:
>  F:\jenkins\jenkins-slave\workspace\maven-box_maven-release_windows@2@2\windows-jdk8-m3.6.x_build\maven-release-manager\target\test-classes\projects\restore-backup-poms\basic-pom\pom.xml: The process cannot access the file because it is being used by another process
> "The process cannot access the file because it is being used by another process" I think points to the root of the bug. This is a Windows file system error message.
> Some history is here where I noticed it:
> [https://github.com/apache/maven-release/pull/42]
> In this case, I started with plexus-utils 3.1.0 which worked, upgraded to plexus-utils 3.3.0, which didn't. And then tried the FileUtils.copyDirectory from both maven-shared-utils and commons-io, all of which failed in the same way.
> I think this is caused by the use of NIO, which doesn't work quite the same when copying files on Windows as on Linux and Mac OS X.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)