On May 6, 2010, at 7:45 PM, Adam Murdoch wrote:
>
>
> On 6/05/10 7:18 AM, Steve Appling wrote:
>> We are seeing a problem on some machines where we get an NPE in
>> JUnitTestClassProcessor line 64. It appears that sometimes executor is not
>> set before processTestClass is called. I'm not quite sure I'm following the
>> logic here, but it looks like a possible problem with the
>> ForkingTestClassProcessor. Does the call on line 71 of
>> ForkingTestClassProcessor (workerProcess.start()) end up calling
>> worker.startProcessing in another thread? If so, then I think there is a
>> race condition. JUnitTestClassProcessor.processTestClass can be called
>> before JUnitTestClassProcessor.startProcessing.
>>
>>
>
> TestWorker calls startProcessing() and then kicks off the thread that will
> call processTestClass(). So, there shouldn't be a race condition. But they
> are called very close together from different threads, so I wonder if it's a
> memory read-write ordering problem.
>
> I've pushed a potential fix for this to head. Could you try it out?
>
>
I tried it, but it still seems to be failing. FYI, it is failing while trying
to run unit tests under buildSrc. Don't know that that is significant.
I am getting the following (only on one machine):
...
buildSrc:test
Test 'Gradle Worker 1' FAILED: org.gradle.api.GradleException: Could not execute
test class 'ideaplugins.CopyControllerTest'.
FAILURE: Build failed with an exception.
* Where:
Build file 'C:\development\webctrl\main\dev\modules\buildSrc\build.gradle'
* What went wrong:
Execution failed for task ':test'.
Cause: There were failing tests. See the report at C:\development\webctrl\main\d
ev\modules\buildSrc\build\reports\tests.
* Exception is:
org.gradle.api.tasks.LocationAwareTaskExecutionException: Build file
'C:\development\webctrl\main\dev\modules\buildSrc\build.gradle'
Execution failed for task ':test'.
at
org.gradle.api.internal.tasks.DefaultTaskExecuter.executeActions(DefaultTaskExecuter.java:63)
at
org.gradle.api.internal.tasks.DefaultTaskExecuter.execute(DefaultTaskExecuter.java:41)
at
org.gradle.api.internal.project.taskfactory.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:32)
at
org.gradle.api.internal.project.taskfactory.ExecutionShortCircuitTaskExecuter.execute(ExecutionShortCircuitTaskExecuter.java:48)
at
org.gradle.api.internal.tasks.SkipTaskExecuter.doExecute(SkipTaskExecuter.java:57)
at
org.gradle.api.internal.tasks.SkipTaskExecuter.execute(SkipTaskExecuter.java:35)
at
org.gradle.api.internal.tasks.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:32)
at org.gradle.api.internal.AbstractTask.execute(AbstractTask.java:226)
at
org.gradle.execution.DefaultTaskGraphExecuter.executeTask(DefaultTaskGraphExecuter.java:167)
at
org.gradle.execution.DefaultTaskGraphExecuter.doExecute(DefaultTaskGraphExecuter.java:160)
at
org.gradle.execution.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:78)
at
org.gradle.execution.TaskNameResolvingBuildExecuter.execute(TaskNameResolvingBuildExecuter.java:161)
at
org.gradle.execution.DelegatingBuildExecuter.execute(DelegatingBuildExecuter.java:54)
at
org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:180)
at
org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:115)
at
org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
at
org.gradle.initialization.BuildSourceBuilder.createBuildSourceClasspath(BuildSourceBuilder.java:114)
at
org.gradle.initialization.BuildSourceBuilder.buildAndCreateClassLoader(BuildSourceBuilder.java:64)
at
org.gradle.initialization.SettingsHandler.findSettingsAndLoadIfAppropriate(SettingsHandler.java:85)
at
org.gradle.initialization.SettingsHandler.findAndLoadSettings(SettingsHandler.java:46)
at
org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:155)
at
org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:115)
at
org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
at org.gradle.launcher.Main.execute(Main.java:93)
at org.gradle.launcher.Main.main(Main.java:42)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.gradle.launcher.GradleMain.main(GradleMain.java:54)
Caused by: org.gradle.api.GradleException: There were failing tests. See the
report at C:\development\webctrl\main\dev\modules\buildSrc\build\reports\tests.
at org.gradle.api.tasks.testing.Test.executeTests(Test.java:338)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:88)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1058)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
at
org.gradle.api.internal.BeanDynamicObject.invokeMethod(BeanDynamicObject.java:158)
at
org.gradle.api.internal.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:93)
at org.gradle.api.tasks.testing.Test_Decorated.invokeMethod(Unknown Source)
at groovy.lang.GroovyObject$invokeMethod$0.call(Unknown Source)
at org.gradle.util.ReflectionUtil.invoke(ReflectionUtil.groovy:26)
at
org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$2.execute(AnnotationProcessingTaskFactory.java:127)
at
org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$2.execute(AnnotationProcessingTaskFactory.java:125)
at
org.gradle.api.internal.tasks.DefaultTaskExecuter.executeActions(DefaultTaskExecuter.java:55)
... 29 common frames omitted
This hides the root exception in JUnitTestClassProcessor. The problem isn't a
failing test, no tests are run - I added a line to print out the stack trace
and got an NPE on line 64.
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email