Gradle build в бесконечном состоянии, но только в режиме отладки intelliJ - PullRequest
1 голос
/ 20 июня 2019

Когда я пытаюсь собрать свой мульти-проект в режиме отладки intelliJ, я заканчиваю бесконечную сборку, что означает, что некоторые потоки (работники исполнения) будут выполнять их в течение бесконечного времени.

Прежде всего, я посмотрел в дамп потока.Я видел, что каждый поток, который заканчивается в бесконечном состоянии, имеет одну и ту же трассировку стека:

"Execution worker for ':' Thread 5" #51 prio=5 os_prio=0 tid=0x000000002918e800 nid=0x4104 runnable [0x000000002e93c000]
   java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
        at java.net.SocketInputStream.read(SocketInputStream.java:171)
        at java.net.SocketInputStream.read(SocketInputStream.java:141)
        at java.net.SocketInputStream.read(SocketInputStream.java:224)
        at com.intellij.openapi.externalSystem.rt.execution.ForkedDebuggerHelper.send(ForkedDebuggerHelper.java:48)
        at com.intellij.openapi.externalSystem.rt.execution.ForkedDebuggerHelper.setupDebugger(ForkedDebuggerHelper.java:24)
        at com.intellij.openapi.externalSystem.rt.execution.ForkedDebuggerHelper$setupDebugger$0.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115) 
...

Full Trace Here

Кроме того, я видел, что только задачи типаTest или JavaExec затронуты.В целом все задачи типа JavaForkOptions.И я увидел, что я не получил следующее сообщение от IntelliJ для этих потоков, которое заканчивается в бесконечном состоянии:

Подключено к виртуальной машине, запущенной ': my-project: geb: test '(localhost: 61041).Откройте вкладку сеанса отладчика

(например).

Какая задача закончится в бесконечном состоянии, недетерминирована, и когда я собираю всю сборку gradle со свойством org.gradle.parallel=false, тогда сборка завершена успешно.Когда я запускаю эту сборку без режима отладки, все работает нормально.Я должен отметить, что этот код сценария Gradle не будет выполняться также для этих потоков с бесконечным состоянием:

gradle.taskGraph.beforeTask { Task task ->
    if (task instanceof JavaForkOptions) {
        print('JvmArgs For Forking' + task.jvmArgs + ' -- in Task ' + task.getName() + '\n')
    }
}

Я обновил Java 8 до java8_211, и я пытаюсь понизить Gradle с 5.4.1 до 4.10.3, но это тоже не работает.

РЕДАКТИРОВАТЬ: Я сообщил об этой проблеме в JetBrains, и у них уже есть билет для этого.https://youtrack.jetbrains.com/issue/IDEA-207748

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...