复制到奴隶永远不会完成

时间:2014-04-29 16:17:03

标签: jenkins jenkins-plugins

随机将Jenkins更新为1.561后,复制过程永远不会完成。有时它有效,有时不行。 如果构建在崩溃之前或者没有问题并且我们无法真实地说,如何重现这一点并不重要。但在我们这边,它每隔2次或第3次发生一次。

我们的设置是:

Master(Jenkins)和slave(Jenkins节点)位于不同的服务器上。 当我们开始工作时,我们希望将文件从master上的工作区复制到slave上的工作区。

控制台中的输出是:

[EnvInject] - Loading node environment variables.
Building remotely on Jenkins-Worker-01 (Remote-Worker) in workspace /var/lib/jenkins/jobs/Master-Branch-Test-Checkout/workspace
[copy-to-slave] Copying '*.*,**', excluding nothing, from 'file:/var/lib/jenkins/jobs/Master-Branch-Test-Checkout/workspace/' on the master to 'file:/var/lib/jenkins/jobs/Master-Branch-Test-Checkout/workspace/' on 'Jenkins-Worker-01'.

之后没有任何反应。这项工作一直没有结束,直到我取消它。没有错误或类似。 Syslog看起来很干净。这会阻止工作人员直到我取消它,因此它是一个严重的错误。出于测试目的,我们让一个工人运行20小时,没有任何事情发生。

如果取消作业,我会得到以下输出:

FATAL: null
java.io.InterruptedIOException
    at hudson.remoting.ProxyOutputStream._write(ProxyOutputStream.java:160)
    at hudson.remoting.ProxyOutputStream.write(ProxyOutputStream.java:109)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
    at java.io.BufferedOutputStream.write(BufferedOutputStream.java:126)
    at com.jcraft.jzlib.DeflaterOutputStream.deflate(DeflaterOutputStream.java:144)
    at com.jcraft.jzlib.DeflaterOutputStream.write(DeflaterOutputStream.java:102)
    at java.io.BufferedOutputStream.write(BufferedOutputStream.java:122)
    at org.apache.tools.tar.TarBuffer.writeBlock(TarBuffer.java:410)
    at org.apache.tools.tar.TarBuffer.writeRecord(TarBuffer.java:351)
    at hudson.org.apache.tools.tar.TarOutputStream.writeEOFRecord(TarOutputStream.java:356)
    at hudson.org.apache.tools.tar.TarOutputStream.finish(TarOutputStream.java:137)
    at hudson.org.apache.tools.tar.TarOutputStream.close(TarOutputStream.java:149)
    at hudson.util.io.TarArchiver.close(TarArchiver.java:125)
    at com.michelin.cio.hudson.plugins.copytoslave.MyFilePath.writeToTar(MyFilePath.java:230)
    at com.michelin.cio.hudson.plugins.copytoslave.MyFilePath.copyRecursiveTo(MyFilePath.java:143)
    at com.michelin.cio.hudson.plugins.copytoslave.CopyToSlaveBuildWrapper.setUp(CopyToSlaveBuildWrapper.java:133)
    at hudson.model.Build$BuildExecution.doRun(Build.java:153)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:518)
    at hudson.model.Run.execute(Run.java:1709)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:231)
Caused by: java.lang.InterruptedException
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:503)
    at hudson.remoting.PipeWindow$Real.get(PipeWindow.java:209)
    at hudson.remoting.ProxyOutputStream._write(ProxyOutputStream.java:141)
    ... 21 more

当它工作时,下面是下一个输出:(只是为了显示,它不是持有它的下一个命令)

[EnvInject] - Executing scripts and injecting environment variables after the SCM step.
[EnvInject] - Injecting as environment variables the properties content JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
[EnvInject] - Variables injected successfully.

我真的想提供更多细节,但我有点卡住了,不知道我还能提供什么。如果你需要更多的东西,我会尝试提供它。

Envoirment:

org.jenkins-ci.plugins:copy-to-slave:1.4.3 
Jenkins 1.561 
Debian Wheezy

1 个答案:

答案 0 :(得分:1)

此问题已在Jenkins 1.563中得到修复,负责的错误是" OutOfMemory on file transfer" (https://issues.jenkins-ci.org/browse/JENKINS-22734

在检查了主人员的日志后,我发现了这一点。我不知道主服务器上存在这些奴隶日志。