GitHub user jaikiran opened a pull request:
https://github.com/apache/ant-antlibs-antunit/pull/1
Avoid potential thread safety issues in LogCapturer
This commit is prompted by the exception I saw in one of the Ant Jenkins jobs which failed
with:
```
/home/jenkins/jenkins-slave/workspace/Ant-Build-Matrix-master-Linux/OS/xenial/jdk/JDK
1.8 (latest)/src/tests/antunit/taskdefs/exec/exec-test.xml:528: java.lang.NullPointerException
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:109)
at org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:155)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
at org.apache.tools.ant.Task.perform(Task.java:350)
at java.util.Vector.forEach(Vector.java:1275)
at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:67)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
at org.apache.tools.ant.Task.perform(Task.java:350)
at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:393)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
at org.apache.tools.ant.Task.perform(Task.java:350)
at org.apache.tools.ant.Target.execute(Target.java:449)
at org.apache.tools.ant.Target.performTasks(Target.java:470)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1392)
at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:36)
at org.apache.tools.ant.Project.executeTargets(Project.java:1253)
at org.apache.ant.antunit.AntUnitScriptRunner.runTarget(AntUnitScriptRunner.java:224)
at org.apache.ant.antunit.AntUnitScriptRunner.runSuite(AntUnitScriptRunner.java:303)
at org.apache.ant.antunit.AntUnit.doFile(AntUnit.java:268)
at org.apache.ant.antunit.AntUnit.doResourceCollection(AntUnit.java:247)
at org.apache.ant.antunit.AntUnit.execute(AntUnit.java:218)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
at org.apache.tools.ant.Task.perform(Task.java:350)
at org.apache.tools.ant.Target.execute(Target.java:449)
at org.apache.tools.ant.Target.performTasks(Target.java:470)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1392)
at org.apache.tools.ant.Project.executeTarget(Project.java:1363)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1253)
at org.apache.tools.ant.Main.runBuild(Main.java:845)
at org.apache.tools.ant.Main.startAnt(Main.java:228)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:284)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:101)
Caused by: java.lang.NullPointerException
at java.util.LinkedList$ListItr.next(LinkedList.java:893)
at org.apache.ant.antunit.LogCapturer.getLog(LogCapturer.java:178)
at org.apache.ant.antunit.LogCapturer.getInfoLog(LogCapturer.java:114)
at org.apache.ant.antunit.LogContains.eval(LogContains.java:81)
at org.apache.ant.antunit.AssertTask.execute(AssertTask.java:71)
at sun.reflect.GeneratedMethodAccessor42.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
... 48 more
```
That specific race condition itself is somewhat handled by a previous commit in this project
here https://github.com/apache/ant-antlibs-antunit/commit/7d62d95ab3a3df61937d2f66ad07fa75ed61aa75.
But the `events` List is still susceptible to race conditions, hence this new commit.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/jaikiran/ant-antlibs-antunit master
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/ant-antlibs-antunit/pull/1.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #1
----
commit 2014f42d7e9c9b352ee381a67e89ec0d35b98acb
Author: Jaikiran Pai <jaikiran.pai@...>
Date: 2018-05-14T05:43:26Z
Avoid potential thread safety issues in LogCapturer
----
---
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
|