From 87fe422628e33293d7f15ef947992a494dd78591 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Fri, 9 Jul 2010 11:04:49 +0000 Subject: [PATCH] multiple parallel mkdirs could make each other fail. PR 49572 git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@962483 13f79535-47bb-0310-9956-ffa450edef68 --- WHATSNEW | 4 ++++ src/main/org/apache/tools/ant/taskdefs/Mkdir.java | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/WHATSNEW b/WHATSNEW index a0e30fc48..9d738dfa7 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -96,6 +96,10 @@ Fixed bugs: resourcelist in the documentation (getting the first available resource from a mirror list). + * A race condition could lead to build failures if multiple + tasks were trying to create the same directory. + Bugzilla Report 49572. + Other changes: -------------- diff --git a/src/main/org/apache/tools/ant/taskdefs/Mkdir.java b/src/main/org/apache/tools/ant/taskdefs/Mkdir.java index 6b0fe3857..6b19460d9 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Mkdir.java +++ b/src/main/org/apache/tools/ant/taskdefs/Mkdir.java @@ -59,6 +59,12 @@ public class Mkdir extends Task { if (!dir.exists()) { boolean result = mkdirs(dir); if (!result) { + if (dir.exists()) { + log("A different process or task has already created " + + "dir " + dir.getAbsolutePath(), + Project.MSG_VERBOSE); + return; + } String msg = "Directory " + dir.getAbsolutePath() + " creation was not successful for an unknown reason"; throw new BuildException(msg, getLocation());