diff --git a/src/main/org/apache/tools/ant/XmlLogger.java b/src/main/org/apache/tools/ant/XmlLogger.java index ea0ad20d4..62d4f2071 100644 --- a/src/main/org/apache/tools/ant/XmlLogger.java +++ b/src/main/org/apache/tools/ant/XmlLogger.java @@ -74,7 +74,13 @@ import org.apache.tools.ant.util.StringUtils; * Generates a file in the current directory with * an XML description of what happened during a build. * The default filename is "log.xml", but this can be overridden - * with the property XmlLogger.file + * with the property XmlLogger.file. + * + * This implementation assumes in its sanity checking that only one + * thread runs a particular target/task at a time. This is enforced + * by the way that parallel builds and antcalls are done - and + * indeed all but the simplest of tasks could run into problems + * if executed in parallel. * * @see Project#addBuildListener(BuildListener) */ @@ -119,14 +125,6 @@ public class XmlLogger implements BuildListener { /** The complete log document for this build. */ private Document doc = builder.newDocument(); - // XXX: (Jon Skeet) I don't see the use for these maps, myself, - // and they don't seem threadsafe to me. Is there something - // preventing a task being executed by two different threads - // at the same time? If not, we could get a mismatch error - // for no good reason. I'd have thought that checking - // the information in the element stored in the TimedElement - // would give enough of a validity check and end up being more - // threadsafe. /** Mapping for when tasks started (Task to TimedElement). */ private Hashtable tasks = new Hashtable(); /** Mapping for when targets started (Task to TimedElement). */