[ https://issues.apache.org/jira/browse/FLINK-15244?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gary Yao closed FLINK-15244. ---------------------------- Resolution: Fixed 1.10: 337f1cc534aac7f2806465687eeefb4d4984e3f3 master: 3c8a3ac0e7c5784a125d2bce3d2058fd5d1066a8 > FileUtils#deleteDirectoryQuietly will delete files in the symbolic link which > point to a directory > -------------------------------------------------------------------------------------------------- > > Key: FLINK-15244 > URL: https://issues.apache.org/jira/browse/FLINK-15244 > Project: Flink > Issue Type: Bug > Components: FileSystems > Affects Versions: 1.10.0 > Reporter: Wei Zhong > Assignee: Wei Zhong > Priority: Blocker > Labels: pull-request-available > Fix For: 1.10.0 > > Time Spent: 10m > Remaining Estimate: 0h > > _FileUtils.deleteDirectoryQuietly_ will delete files in symbolic link which > point to a directory. Currently the PyFlink uses this method to delete > temporary folders generated during the job submission and python UDF > execution, which contains the symbolic links which may point to users' > libraries and directories in distributed cache. > To resolve this problem we need to check if the directory is symbolic link in > _FileUtils.deleteDirectoryInternal:_ > {code:java} > private static void deleteDirectoryInternal(File directory) throws > IOException { > // **We should check if the directory is symbolic link.** > if (directory.isDirectory()) { > // directory exists and is a directory > // empty the directory first > try { > cleanDirectoryInternal(directory); > } > catch (FileNotFoundException ignored) { > // someone concurrently deleted the directory, nothing to do for us > return; > } > // delete the directory. this fails if the directory is not empty, > meaning > // if new files got concurrently created. we want to fail then. > // if someone else deleted the empty directory concurrently, we don't > mind > // the result is the same for us, after all > Files.deleteIfExists(directory.toPath()); > } > else if (directory.exists()) { > // exists but is file, not directory > // either an error from the caller, or concurrently a file got created > throw new IOException(directory + " is not a directory"); > } > // else: does not exist, which is okay (as if deleted) > } > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)