Дженкинс зависает между сборкой и пост-сборкой - PullRequest
0 голосов
/ 04 января 2019

После обновления Jenkins до версии 2.156 (с версии 1.6) некоторые из наших заданий по сборке застряли после завершения и до перехода к действию после сборки. Само задание завершается в течение 5 минут (как и раньше), затем оно останавливается на 5-10 минут, прежде чем двигаться дальше.

Мне удалось сузить это до:

"Executor #10 for master : executing 03_masa #4390" Id=34464 Group=main TIMED_WAITING
    at java.lang.Thread.sleep(Native Method)
    at hudson.util.ProcessTree$WindowsOSProcess.killSoftly(ProcessTree.java:560)
    at hudson.util.ProcessTree$WindowsOSProcess.killRecursively(ProcessTree.java:520)
    at hudson.util.ProcessTree$Windows.killAll(ProcessTree.java:666)
    at hudson.Launcher$LocalLauncher.kill(Launcher.java:955)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:510)
    at hudson.model.Run.execute(Run.java:1810)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:429)

Ссылочный код можно найти здесь (присутствует с версии 2.141).

threadDump # 1 , threadDump # 2

Можем ли мы что-нибудь с этим сделать?

1 Ответ

0 голосов
/ 07 января 2019

2.141 вводит 2-минутное ожидание завершения процесса (может показаться, что оно умножается на столько процессов, сколько было создано во время вашей сборки)

https://github.com/jenkinsci/jenkins/commit/d8eac92ee9a1c19bf145763589f1c152607bf3ed

не знаю, почему killSoftly не работает, но вы можете настроить время ожидания

В вашем jenkins.xml вы можете добавить это к элементу /service/arguments (до -jar), например так:

-DSoftKillWaitSeconds=0

После этого и перезапуска jenkins вы сможете найти настройку SoftKillWaitSeconds в /systemInfo

и ваше время сборки должно вернуться к нормальному состоянию

...