From 4541e74e531eccc4141865cf44433753a4ed0b17 Mon Sep 17 00:00:00 2001 From: Wenjun Ruan Date: Tue, 6 Feb 2024 11:59:07 +0800 Subject: [PATCH] Fix create parent directory will cause FileAlreadyExistsException (#15576) Co-authored-by: Rick Cheng --- .../dolphinscheduler/common/utils/FileUtils.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/FileUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/FileUtils.java index 1f3ccfed3d..fee1d9a95c 100644 --- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/FileUtils.java +++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/FileUtils.java @@ -35,6 +35,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; +import java.nio.file.FileAlreadyExistsException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.attribute.PosixFilePermission; @@ -287,8 +288,13 @@ public class FileUtils { createDirectoryWith755(parent); } - Files.createDirectory(path); - Files.setPosixFilePermissions(path, PERMISSION_755); + try { + Files.createDirectory(path); + Files.setPosixFilePermissions(path, PERMISSION_755); + } catch (FileAlreadyExistsException fileAlreadyExistsException) { + // Catch the FileAlreadyExistsException here to avoid create the same parent directory in parallel + log.debug("The directory: {} already exists", path); + } } }