Éamonn McManus created IO-862:
---------------------------------

             Summary: FileUtils.deleteDirectory fails for a directory 
containing a broken symlink
                 Key: IO-862
                 URL: https://issues.apache.org/jira/browse/IO-862
             Project: Commons IO
          Issue Type: Bug
          Components: Utilities
    Affects Versions: 2.18.0
         Environment: JDK 21 on Linux.
            Reporter: Éamonn McManus


I tried importing Commons IO from HEAD into Google's monorepo and running all 
affected tests, and I found that [this 
test|https://gerrit.googlesource.com/plugins/uploadvalidator/+/refs/heads/master/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/SymlinkValidatorTest.java]
 fails. It creates a directory hierarchy that includes a broken symbolic link 
(one that points to a nonexistent file). Then in the test teardown it calls 
FileUtils.deleteDirectory. That call fails when it encounters the broken 
symlink.

The failure looks like this:
{noformat}
org.apache.commons.io.IOExceptionList: 2 exception(s): 
[org.apache.commons.io.IOIndexedException: FileNotFoundException #2: 
/build/work/d4eb40af2b074d2b15ddd69536752eec859c/google3/tmp/Git11272691366437749178/symbolicFolder,
 org.apache.commons.io.IOIndexedException: FileNotFoundException #3: 
/build/work/d4eb40af2b074d2b15ddd69536752eec859c/google3/tmp/Git11272691366437749178/foo.txt|#2:
 
/build/work/d4eb40af2b074d2b15ddd69536752eec859c/google3/tmp/Git11272691366437749178/symbolicFolder,
 org.apache.commons.io.IOIndexedException: FileNotFoundException #3: 
/build/work/d4eb40af2b074d2b15ddd69536752eec859c/google3/tmp/Git11272691366437749178/foo.txt]
at org.apache.commons.io.IOExceptionList.checkEmpty(IOExceptionList.java:50)
at org.apache.commons.io.function.IOStream.forAll(IOStream.java:357)
at org.apache.commons.io.function.IOStreams.forAll(IOStreams.java:42)
at org.apache.commons.io.function.IOStreams.forAll(IOStreams.java:36)
at org.apache.commons.io.function.IOConsumer.forAll(IOConsumer.java:80)
at org.apache.commons.io.FileUtils.cleanDirectory(FileUtils.java:372)
at org.apache.commons.io.FileUtils.deleteDirectory(FileUtils.java:1247)
at 
com.googlesource.gerrit.plugins.uploadvalidator.ValidatorTestCase.cleanup(ValidatorTestCase.java:39)
... 33 trimmed
Caused by: org.apache.commons.io.IOIndexedException: FileNotFoundException #2: 
/build/work/d4eb40af2b074d2b15ddd69536752eec859c/google3/tmp/Git11272691366437749178/symbolicFolder
at org.apache.commons.io.function.IOStream.lambda$forAll$1(IOStream.java:352)
at 
java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
at 
java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
at org.apache.commons.io.function.IOStream.forAll(IOStream.java:343)
... 40 more
Caused by: java.io.FileNotFoundException: 
/build/work/d4eb40af2b074d2b15ddd69536752eec859c/google3/tmp/Git11272691366437749178/symbolicFolder
at org.apache.commons.io.FileUtils.checkExists(FileUtils.java:297)
at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:1390)
at org.apache.commons.io.function.IOStream.lambda$forAll$1(IOStream.java:345)
... 43 more
{noformat}
 

The issue looks to have been introduced by 
[0b9c657|https://github.com/apache/commons-io/commit/0b9c657cc0b6dc6571e27b7f41f6a548db7682ca].

 



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

Reply via email to