antoine 2003/07/29 13:03:07
Modified: src/main/org/apache/tools/ant/taskdefs Mkdir.java
Log:
Similarly to what happens with the delete task, there seem to be race
conditions which prevent successful directory creation on Windows.
This change allows a second try.
Revision Changes Path
1.25 +19 -2 ant/src/main/org/apache/tools/ant/taskdefs/Mkdir.java
Index: Mkdir.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Mkdir.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- Mkdir.java 9 Jul 2003 13:12:23 -0000 1.24
+++ Mkdir.java 29 Jul 2003 20:03:07 -0000 1.25
@@ -1,7 +1,7 @@
/*
* The Apache Software License, Version 1.1
*
- * Copyright (c) 2000,2002 The Apache Software Foundation. All rights
+ * Copyright (c) 2000,2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -71,6 +71,7 @@
public class Mkdir extends Task {
+ private static final int MKDIR_RETRY_SLEEP_MILLIS = 10;
/**
* our little directory
*/
@@ -92,7 +93,7 @@
}
if (!dir.exists()) {
- boolean result = dir.mkdirs();
+ boolean result = mkdirs(dir);
if (!result) {
String msg = "Directory " + dir.getAbsolutePath()
+ " creation was not successful for an unknown reason";
@@ -109,6 +110,22 @@
*/
public void setDir(File dir) {
this.dir = dir;
+ }
+ /**
+ * Attempt to fix possible race condition when creating
+ * directories on WinXP. If the mkdirs does not work,
+ * wait a little and try again.
+ */
+ private boolean mkdirs(File f) {
+ if (!f.mkdirs()) {
+ try {
+ Thread.sleep(MKDIR_RETRY_SLEEP_MILLIS);
+ return f.mkdirs();
+ } catch (InterruptedException ex) {
+ return f.mkdirs();
+ }
+ }
+ return true;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]