Hi Ivy Devs,

Sorry to bother you, but we've run into some annoying issues with Ivy
and concurrency (using ant parallel). For some unbelievably stupid
reason SimpleDateFormat isn't thread safe.

http://download-llnw.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html#synchronization

Please find below a patch which illustrates one possible fix. I can
imagine you might want to do something completely different, this is
more of a show of good faith. Please let me know if you need me to
raise a Bug and/or submit a different patch.

Cheers,

Charles

diff --git a/src/java/org/apache/ivy/Ivy.java b/src/java/org/apache/ivy/Ivy.java
index 3d9d8cd..608b364 100644
--- a/src/java/org/apache/ivy/Ivy.java
+++ b/src/java/org/apache/ivy/Ivy.java
@@ -24,6 +24,7 @@ import java.net.URL;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Collection;
+import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -129,8 +130,24 @@ public class Ivy {

     private static final int KILO = 1024;

-    public static final SimpleDateFormat DATE_FORMAT = new
SimpleDateFormat("yyyyMMddHHmmss");
-
+    public static final ThreadSafeDateFormat DATE_FORMAT = new
ThreadSafeDateFormat("yyyyMMddHHmmss");
+
+    public static class ThreadSafeDateFormat {
+        private final String format;
+
+        public ThreadSafeDateFormat(String format) {
+            this.format = format;
+        }
+
+        public Date parse(String date) throws ParseException {
+            return new SimpleDateFormat(format).parse(date);
+        }
+
+        public String format(Date date) {
+            return new SimpleDateFormat(format).format(date);
+        }
+    }
+
     /**
      * the current version of Ivy, as displayed on the console when
      * Ivy is initialized

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
For additional commands, e-mail: dev-h...@ant.apache.org

Reply via email to