Giacomo Boccardo created IO-796: ----------------------------------- Summary: FileAlreadyExistsException in commons-fileupload Key: IO-796 URL: https://issues.apache.org/jira/browse/IO-796 Project: Commons IO Issue Type: Bug Affects Versions: 2.12.0 Reporter: Giacomo Boccardo
Switching from 2.11.0 to 2.12.0 causes the following exception in commons-fileupload (1.5): {code:java} Caused by: java.nio.file.FileAlreadyExistsException: /home/A/B/C at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:94) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) at java.base/sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:389) at java.base/java.nio.file.Files.createDirectory(Files.java:690) at java.base/java.nio.file.Files.createAndCheckIsDirectory(Files.java:797) at java.base/java.nio.file.Files.createDirectories(Files.java:743) at org.apache.commons.io.file.PathUtils.createParentDirectories(PathUtils.java:383) at org.apache.commons.io.file.PathUtils.createParentDirectories(PathUtils.java:367) at org.apache.commons.io.output.DeferredFileOutputStream.thresholdReached(DeferredFileOutputStream.java:333) at org.apache.commons.io.output.ThresholdingOutputStream.checkThreshold(ThresholdingOutputStream.java:105) at org.apache.commons.io.output.ThresholdingOutputStream.write(ThresholdingOutputStream.java:231) at org.apache.commons.fileupload.util.Streams.copy(Streams.java:105) at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:376) {code} where B and C are symbolic links. In particular, DeferredFileOutputStream#thresholdReached has been modified from: {code:java} protected void thresholdReached() throws IOException { if (prefix != null) { outputFile = File.createTempFile(prefix, suffix, directory); } FileUtils.forceMkdirParent(outputFile); final OutputStream fos = Files.newOutputStream(outputFile.toPath()); [...] } {code} to: {code:java} protected void thresholdReached() throws IOException { if (prefix != null) { outputPath = Files.createTempFile(directory, prefix, suffix); } PathUtils.createParentDirectories(outputPath); final OutputStream fos = Files.newOutputStream(outputPath); [...] } {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)