[GRADLE-3190] TestNG suites multi-threaded execution may cause the build to hang Created: 30/Oct/14  Updated: 06/Nov/14  Resolved: 06/Nov/14

Status: Resolved
Project: Gradle
Affects Version/s: 2.1
Fix Version/s: 2.3-rc-1

Type: Bug
Reporter: Szczepan Faber Assignee: Szczepan Faber
Resolution: Fixed Votes: 0


 Description   

When TestNG execution is configured to use a suite and the suite enables TestNG built-in parallelism there is a possibility that the build will hang forever.

//build.gradle
test {
  useTestNG {
  	suites "suite.xml"
  }
}  
...

//suite.xml
<suite name="AwesomeSuite" parallel="tests" thread-count="20">
...

The exception that can be seen in Gradle build log:

Unexpected exception thrown.
org.gradle.messaging.remote.internal.MessageIOException: Could not write message [ChannelMessage channel: org.gradle.api.internal.tasks.testing.TestResultProcessor, payload: [MethodInvocation method: output()]] to '/0:0:0:0:0:0:0:1%1:44052'.
	at org.gradle.messaging.remote.internal.inet.SocketConnection.dispatch(SocketConnection.java:115)
	at org.gradle.messaging.remote.internal.hub.MessageHub$ConnectionDispatch.run(MessageHub.java:279)
	at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
	at org.gradle.messaging.serialize.DefaultSerializerRegistry$TaggedTypeSerializer.write(DefaultSerializerRegistry.java:76)
	at org.gradle.api.internal.tasks.testing.worker.TestEventSerializer$2.write(TestEventSerializer.java:64)
	at org.gradle.api.internal.tasks.testing.worker.TestEventSerializer$2.write(TestEventSerializer.java:60)
	at org.gradle.messaging.remote.internal.hub.MethodInvocationSerializer$MethodInvocationWriter.writeArguments(MethodInvocationSerializer.java:67)
	at org.gradle.messaging.remote.internal.hub.MethodInvocationSerializer$MethodInvocationWriter.write(MethodInvocationSerializer.java:63)
	at org.gradle.messaging.remote.internal.hub.MethodInvocationSerializer$MethodInvocationWriter.write(MethodInvocationSerializer.java:48)
	at org.gradle.messaging.serialize.kryo.TypeSafeSerializer$2.write(TypeSafeSerializer.java:46)
	at org.gradle.messaging.remote.internal.hub.InterHubMessageSerializer$MessageWriter.write(InterHubMessageSerializer.java:108)
	at org.gradle.messaging.remote.internal.hub.InterHubMessageSerializer$MessageWriter.write(InterHubMessageSerializer.java:93)
	at org.gradle.messaging.remote.internal.inet.SocketConnection.dispatch(SocketConnection.java:112)
	... 5 more

Generated at Wed Jun 30 12:42:21 CDT 2021 using Jira 8.4.2#804003-sha1:d21414fc212e3af190e92c2d2ac41299b89402cf.