随机将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
答案 0 :(得分:1)
此问题已在Jenkins 1.563中得到修复,负责的错误是" OutOfMemory on file transfer" (https://issues.jenkins-ci.org/browse/JENKINS-22734)
在检查了主人员的日志后,我发现了这一点。我不知道主服务器上存在这些奴隶日志。