Gradle 测试任务永远挂在 CountDownLatch 上

Vaz*_*zid 5 java gradle

我正在使用 jenkins 从相同的共享代码在不同的机器上并行运行 gradle 测试。但是 gradle 测试任务永远挂起。从 threadump 我观察到主线程正在等待获取一些锁。任何人都可以提出解决方案/解决方法吗?

测试执行器的线程转储。

"main" #1 prio=5 os_prio=0 cpu=1437.50ms elapsed=110.46s tid=0x0000020a6b317800 nid=0xeb4 waiting on condition  [0x00000015996fe000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@11.0.4/Native Method)
        - parking to wait for  <0x000000008233b800> (a java.util.concurrent.CountDownLatch$Sync)
        at java.util.concurrent.locks.LockSupport.park(java.base@11.0.4/LockSupport.java:194)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(java.base@11.0.4/AbstractQueuedSynchronizer.java:885)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(java.base@11.0.4/AbstractQueuedSynchronizer.java:1039)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(java.base@11.0.4/AbstractQueuedSynchronizer.java:1345)
        at java.util.concurrent.CountDownLatch.await(java.base@11.0.4/CountDownLatch.java:232)
        at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:72)
        at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:46)
        at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:91)
        at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:34)
        at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:137)
        at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:69)
        at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:68)
        at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:73)

"Reference Handler" #2 daemon prio=10 os_prio=2 cpu=46.88ms elapsed=110.42s tid=0x0000020a7aa32800 nid=0x20b0 waiting on condition  [0x0000001599dfe000]
   java.lang.Thread.State: RUNNABLE
        at java.lang.ref.Reference.waitForReferencePendingList(java.base@11.0.4/Native Method)
        at java.lang.ref.Reference.processPendingReferences(java.base@11.0.4/Reference.java:241)
        at java.lang.ref.Reference$ReferenceHandler.run(java.base@11.0.4/Reference.java:213)

"Finalizer" #3 daemon prio=8 os_prio=1 cpu=0.00ms elapsed=110.42s tid=0x0000020a7b262000 nid=0xe78 in Object.wait()  [0x0000001599eff000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(java.base@11.0.4/Native Method)
        - waiting on <no object reference available>
        at java.lang.ref.ReferenceQueue.remove(java.base@11.0.4/ReferenceQueue.java:155)
        - waiting to re-lock in wait() <0x00000000811c6000> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(java.base@11.0.4/ReferenceQueue.java:176)
        at java.lang.ref.Finalizer$FinalizerThread.run(java.base@11.0.4/Finalizer.java:170)

"Signal Dispatcher" #4 daemon prio=9 os_prio=2 cpu=0.00ms elapsed=110.40s tid=0x0000020a7b2b7000 nid=0x150 runnable  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Attach Listener" #5 daemon prio=5 os_prio=2 cpu=187.50ms elapsed=110.40s tid=0x0000020a7b2b8000 nid=0x2014 waiting on condition  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #6 daemon prio=9 os_prio=2 cpu=55750.00ms elapsed=110.40s tid=0x0000020a7b2ba800 nid=0x1eb4 waiting on condition  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
   No compile task

"C1 CompilerThread0" #8 daemon prio=9 os_prio=2 cpu=9015.63ms elapsed=110.40s tid=0x0000020a7b2c3000 nid=0x2d0 waiting on condition  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
   No compile task

"Sweeper thread" #9 daemon prio=9 os_prio=2 cpu=250.00ms elapsed=110.40s tid=0x0000020a7b2c4800 nid=0x1ca0 runnable  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Common-Cleaner" #10 daemon prio=8 os_prio=1 cpu=15.63ms elapsed=110.10s tid=0x0000020a7b543000 nid=0xdac in Object.wait()  [0x000000159a4fe000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(java.base@11.0.4/Native Method)
        - waiting on <no object reference available>
        at java.lang.ref.ReferenceQueue.remove(java.base@11.0.4/ReferenceQueue.java:155)
        - waiting to re-lock in wait() <0x00000000811c6370> (a java.lang.ref.ReferenceQueue$Lock)
        at jdk.internal.ref.CleanerImpl.run(java.base@11.0.4/CleanerImpl.java:148)
        at java.lang.Thread.run(java.base@11.0.4/Thread.java:834)
        at jdk.internal.misc.InnocuousThread.run(java.base@11.0.4/InnocuousThread.java:134)

"Service Thread" #11 daemon prio=9 os_prio=0 cpu=0.00ms elapsed=109.25s tid=0x0000020a7dacc000 nid=0x1e4c runnable  [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Test worker" #13 prio=5 os_prio=0 cpu=63062.50ms elapsed=108.92s tid=0x0000020a7e50d000 nid=0x1e54 runnable  [0x000000159abf8000]
   java.lang.Thread.State: RUNNABLE
        at java.util.HashMap.hash(java.base@11.0.4/HashMap.java:339)
        at java.util.HashMap.putMapEntries(java.base@11.0.4/HashMap.java:510)
        at java.util.LinkedHashMap.<init>(java.base@11.0.4/LinkedHashMap.java:384)
        at sun.reflect.annotation.AnnotationParser.parseAnnotation2(java.base@11.0.4/AnnotationParser.java:275)
        at sun.reflect.annotation.AnnotationParser.parseAnnotations2(java.base@11.0.4/AnnotationParser.java:121)
        at sun.reflect.annotation.AnnotationParser.parseAnnotations(java.base@11.0.4/AnnotationParser.java:73)
        at java.lang.reflect.Executable.declaredAnnotations(java.base@11.0.4/Executable.java:604)
        - locked <0x000000008b03f940> (a java.lang.reflect.Method)
        at java.lang.reflect.Executable.declaredAnnotations(java.base@11.0.4/Executable.java:602)
        - locked <0x000000008b03fa98> (a java.lang.reflect.Method)
        at java.lang.reflect.Executable.getAnnotation(java.base@11.0.4/Executable.java:572)
        at java.lang.reflect.Method.getAnnotation(java.base@11.0.4/Method.java:695)
        at junit.framework.TestCase.runBare(TestCase.java:141)
        at junit.framework.TestResult$1.protect(TestResult.java:122)
        at junit.framework.TestResult.runProtected(TestResult.java:142)
        at junit.framework.TestResult.run(TestResult.java:125)
        at junit.framework.TestCase.run(TestCase.java:129)
        at junit.framework.TestSuite.runTest(TestSuite.java:255)
        at junit.framework.TestSuite.run(TestSuite.java:250)
        at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:84)
        at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:110)
        at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
        at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:38)
        at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62)
        at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@11.0.4/Native Method)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@11.0.4/NativeMethodAccessorImpl.java:62)
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@11.0.4/DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(java.base@11.0.4/Method.java:566)
        at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
        at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
        at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
        at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
        at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
        at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:118)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@11.0.4/Native Method)
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@11.0.4/NativeMethodAccessorImpl.java:62)
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@11.0.4/DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(java.base@11.0.4/Method.java:566)
        at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
        at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
        at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
        at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
        at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:412)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@11.0.4/ThreadPoolExecutor.java:1128)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@11.0.4/ThreadPoolExecutor.java:628)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
        at java.lang.Thread.run(java.base@11.0.4/Thread.java:834)

"/127.0.0.1:65320 to /127.0.0.1:65318 workers Thread 2" #14 prio=5 os_prio=0 cpu=31.25ms elapsed=108.76s tid=0x0000020a7e023800 nid=0x4b8 waiting on condition  [0x000000159acfe000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@11.0.4/Native Method)
        - parking to wait for  <0x000000008233d130> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(java.base@11.0.4/LockSupport.java:194)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@11.0.4/AbstractQueuedSynchronizer.java:2081)
        at org.gradle.internal.remote.internal.hub.queue.EndPointQueue.take(EndPointQueue.java:49)
        at org.gradle.internal.remote.internal.hub.MessageHub$ConnectionDispatch.run(MessageHub.java:320)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@11.0.4/ThreadPoolExecutor.java:1128)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@11.0.4/ThreadPoolExecutor.java:628)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
        at java.lang.Thread.run(java.base@11.0.4/Thread.java:834)

"/127.0.0.1:65320 to /127.0.0.1:65318 workers Thread 3" #15 prio=5 os_prio=0 cpu=15.63ms elapsed=108.76s tid=0x0000020a7c9e5000 nid=0xc34 runnable  [0x000000159adfe000]
   java.lang.Thread.State: RUNNABLE
        at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(java.base@11.0.4/Native Method)
        at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(java.base@11.0.4/WindowsSelectorImpl.java:339)
        at sun.nio.ch.WindowsSelectorImpl.doSelect(java.base@11.0.4/WindowsSelectorImpl.java:167)
        at sun.nio.ch.SelectorImpl.lockAndDoSelect(java.base@11.0.4/SelectorImpl.java:124)
        - locked <0x000000008233bed0> (a sun.nio.ch.Util$2)
        - locked <0x000000008233be48> (a sun.nio.ch.WindowsSelectorImpl)
        at sun.nio.ch.SelectorImpl.select(java.base@11.0.4/SelectorImpl.java:141)
        at org.gradle.internal.remote.internal.inet.SocketConnection$SocketInputStream.read(SocketConnection.java:185)
        at com.esotericsoftware.kryo.io.Input.fill(Input.java:146)
        at com.esotericsoftware.kryo.io.Input.require(Input.java:178)
        at com.esotericsoftware.kryo.io.Input.readByte(Input.java:295)
        at org.gradle.internal.serialize.kryo.KryoBackedDecoder.readByte(KryoBackedDecoder.java:81)
        at org.gradle.internal.remote.internal.hub.InterHubMessageSerializer$MessageReader.read(InterHubMessageSerializer.java:64)
        at org.gradle.internal.remote.internal.hub.InterHubMessageSerializer$MessageReader.read(InterHubMessageSerializer.java:52)
        at org.gradle.internal.remote.internal.inet.SocketConnection.receive(SocketConnection.java:81)
        at org.gradle.internal.remote.internal.hub.MessageHub$ConnectionReceive.run(MessageHub.java:268)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@11.0.4/ThreadPoolExecutor.java:1128)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@11.0.4/ThreadPoolExecutor.java:628)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
        at java.lang.Thread.run(java.base@11.0.4/Thread.java:834)

"Java2D Disposer" #16 daemon prio=10 os_prio=2 cpu=31.25ms elapsed=107.09s tid=0x0000020a0f5a9800 nid=0x18d0 in Object.wait()  [0x000000159affe000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(java.base@11.0.4/Native Method)
        - waiting on <no object reference available>
        at java.lang.ref.ReferenceQueue.remove(java.base@11.0.4/ReferenceQueue.java:155)
        - waiting to re-lock in wait() <0x000000008259dc10> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(java.base@11.0.4/ReferenceQueue.java:176)
        at sun.java2d.Disposer.run(java.desktop@11.0.4/Disposer.java:144)
        at java.lang.Thread.run(java.base@11.0.4/Thread.java:834)

"AWT-Windows" #18 daemon prio=6 os_prio=0 cpu=78.13ms elapsed=107.09s tid=0x0000020a7dd50000 nid=0x1c24 runnable  [0x000000159b1ff000]
   java.lang.Thread.State: RUNNABLE
        at sun.awt.windows.WToolkit.eventLoop(java.desktop@11.0.4/Native Method)
        at sun.awt.windows.WToolkit.run(java.desktop@11.0.4/WToolkit.java:305)
        at java.lang.Thread.run(java.base@11.0.4/Thread.java:834)

"AWT-Shutdown" #21 prio=6 os_prio=0 cpu=0.00ms elapsed=95.95s tid=0x0000020a0f167800 nid=0x184c in Object.wait()  [0x000000159a5ff000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(java.base@11.0.4/Native Method)
        - waiting on <0x000000008259af90> (a java.lang.Object)
        at java.lang.Object.wait(java.base@11.0.4/Object.java:328)
        at sun.awt.AWTAutoShutdown.run(java.desktop@11.0.4/AWTAutoShutdown.java:291)
        - waiting to re-lock in wait() <0x000000008259af90> (a java.lang.Object)
        at java.lang.Thread.run(java.base@11.0.4/Thread.java:834)

"AWT-EventQueue-0" #25 prio=6 os_prio=0 cpu=15.63ms elapsed=95.34s tid=0x0000020a13199000 nid=0x129c waiting on condition  [0x000000159b4fe000]
   java.lang.Thread.State: WAITING (parking)
        at jdk.internal.misc.Unsafe.park(java.base@11.0.4/Native Method)
        - parking to wait for  <0x0000000082503fc8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(java.base@11.0.4/LockSupport.java:194)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(java.base@11.0.4/AbstractQueuedSynchronizer.java:2081)
        at java.awt.EventQueue.getNextEvent(java.desktop@11.0.4/EventQueue.java:566)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(java.desktop@11.0.4/EventDispatchThread.java:190)
        at java.awt.EventDispatchThread.pumpEventsForFilter(java.desktop@11.0.4/EventDispatchThread.java:124)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(java.desktop@11.0.4/EventDispatchThread.java:113)
        at java.awt.EventDispatchThread.pumpEvents(java.desktop@11.0.4/EventDispatchThread.java:109)
        at java.awt.EventDispatchThread.pumpEvents(java.desktop@11.0.4/EventDispatchThread.java:101)
        at java.awt.EventDispatchThread.run(java.desktop@11.0.4/EventDispatchThread.java:90)

"ClientMessageReceptor0" #26 daemon prio=5 os_prio=0 cpu=0.00ms elapsed=91.73s tid=0x0000020a0f8f5800 nid=0x1570 runnable  [0x000000159b3fe000]
   java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(java.base@11.0.4/Native Method)
        at java.net.SocketInputStream.socketRead(java.base@11.0.4/SocketInputStream.java:115)
        at java.net.SocketInputStream.read(java.base@11.0.4/SocketInputStream.java:168)
        at java.net.SocketInputStream.read(java.base@11.0.4/SocketInputStream.java:140)
        at org.jacorb.orb.etf.StreamConnectionBase.read(StreamConnectionBase.java:111)
        at org.jacorb.orb.giop.GIOPConnection.getMessage(GIOPConnection.java:389)
        at org.jacorb.orb.giop.GIOPConnection.receiveMessagesLoop(GIOPConnection.java:541)
        at org.jacorb.orb.giop.GIOPConnection.receiveMessages(GIOPConnection.java:533)
        at org.jacorb.orb.giop.MessageReceptor.doWork(MessageReceptor.java:69)
        at org.jacorb.util.threadpool.ConsumerTie.run(ConsumerTie.java:60)
        at java.lang.Thread.run(java.base@11.0.4/Thread.java:834)

"ClientMessageReceptor1" #27 daemon prio=5 os_prio=0 cpu=15.63ms elapsed=91.63s tid=0x0000020a0f8f6800 nid=0x19c0 runnable  [0x000000159b5fe000]
   java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(java.base@11.0.4/Native Method)
        at java.net.SocketInputStream.socketRead(java.base@11.0.4/SocketInputStream.java:115)
        at java.net.SocketInputStream.read(java.base@11.0.4/SocketInputStream.java:168)
        at java.net.SocketInputStream.read(java.base@11.0.4/SocketInputStream.java:140)
        at org.jacorb.orb.etf.StreamConnectionBase.read(StreamConnectionBase.java:111)
        at org.jacorb.orb.giop.GIOPConnection.getMessage(GIOPConnection.java:389)
        at org.jacorb.orb.giop.GIOPConnection.receiveMessagesLoop(GIOPConnection.java:541)
        at org.jacorb.orb.giop.GIOPConnection.receiveMessages(GIOPConnection.java:533)
        at org.jacorb.orb.giop.MessageReceptor.doWork(MessageReceptor.java:69)
        at org.jacorb.util.threadpool.ConsumerTie.run(ConsumerTie.java:60)
        at java.lang.Thread.run(java.base@11.0.4/Thread.java:834)

"CacheQueueHandler" #28 daemon prio=5 os_prio=0 cpu=0.00ms elapsed=91.33s tid=0x0000020a0f8f4000 nid=0x1f90 in Object.wait()  [0x000000159b6ff000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(java.base@11.0.4/Native Method)
        - waiting on <0x00000000835a6300> (a java.util.ArrayList)
        at java.lang.Object.wait(java.base@11.0.4/Object.java:328)
        at chs.utility.dataservices.cache.FileBasedCache$RequestHandler.getNextRequest(FileBasedCache.java:474)
        - waiting to re-lock in wait() <0x00000000835a6300> (a java.util.ArrayList)
        at chs.utility.dataservices.cache.FileBasedCache$RequestHandler.run(FileBasedCache.java:451)
        at java.lang.Thread