Your browser was unable to load all of the resources. They may have been blocked by your firewall, proxy or browser configuration.
Press Ctrl+F5 or Ctrl+Shift+R to have your browser try again.

java.io.IOException: Premature EOF #3890

Laba42 ·

For some time now we have received the following error message at this step.
The error does not always occur, but I cannot detect a repeat method.

10:36:19,997 ERROR - Step 'master>Publish-Artifacts-Result-Files' is failed.
    java.lang.RuntimeException: Error executing node job execute job. 
        at com.pmease.quickbuild.grid.NodeJobExecuteTask.reduce(NodeJobExecuteTask.java:32) 
        at com.pmease.quickbuild.grid.NodeJobExecuteTask.reduce(NodeJobExecuteTask.java:10) 
        at com.pmease.quickbuild.grid.GridTaskFuture.get(GridTaskFuture.java:116) 
        at com.pmease.quickbuild.grid.GridTaskFuture.get(GridTaskFuture.java:120) 
        at com.pmease.quickbuild.grid.GridNode.executeJob(GridNode.java:491) 
        at com.pmease.quickbuild.grid.GridImpl.transferFiles(GridImpl.java:171) 
        at com.pmease.quickbuild.setting.configuration.artifactstorage.ServerArtifactStorage$1.upload(ServerArtifactStorage.java:85) 
        at com.pmease.quickbuild.plugin.artifact.ArtifactPublishStep.run(ArtifactPublishStep.java:114) 
        at com.pmease.quickbuild.plugin.artifact.ArtifactPublishStep$$EnhancerByCGLIB$$9491de89.CGLIB$run$0(<generated>) 
        at com.pmease.quickbuild.plugin.artifact.ArtifactPublishStep$$EnhancerByCGLIB$$9491de89$$FastClassByCGLIB$$9dc9950a.invoke(<generated>) 
        at net.sf.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:215) 
        at com.pmease.quickbuild.DefaultScriptEngine$Interpolator.intercept(DefaultScriptEngine.java:261) 
        at com.pmease.quickbuild.plugin.artifact.ArtifactPublishStep$$EnhancerByCGLIB$$9491de89.run(<generated>) 
        at com.pmease.quickbuild.stepsupport.Step.doExecute(Step.java:619) 
        at com.pmease.quickbuild.stepsupport.Step.execute(Step.java:521) 
        at com.pmease.quickbuild.stepsupport.StepExecutionJob.executeStepAwareJob(StepExecutionJob.java:31) 
        at com.pmease.quickbuild.stepsupport.StepAwareJob.executeBuildAwareJob(StepAwareJob.java:45) 
        at com.pmease.quickbuild.BuildAwareJob.execute(BuildAwareJob.java:60) 
        at com.pmease.quickbuild.grid.GridJob.run(GridJob.java:106) 
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
        at java.lang.Thread.run(Thread.java:745) 
    Caused by: java.lang.RuntimeException: java.io.IOException: Premature EOF 
        at com.pmease.quickbuild.util.FileUtils.untar(FileUtils.java:892) 
        at com.pmease.quickbuild.grid.CopyFilesJob.execute(CopyFilesJob.java:121) 
        at com.pmease.quickbuild.grid.NodeJobExecuteJob.execute(NodeJobExecuteJob.java:25) 
        ... 6 more 
    Caused by: java.io.IOException: Premature EOF 
        at sun.net.www.http.ChunkedInputStream.readAheadBlocking(ChunkedInputStream.java:565) 
        at sun.net.www.http.ChunkedInputStream.readAhead(ChunkedInputStream.java:609) 
        at sun.net.www.http.ChunkedInputStream.read(ChunkedInputStream.java:696) 
        at java.io.FilterInputStream.read(FilterInputStream.java:133) 
        at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3335) 
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:284) 
        at java.io.BufferedInputStream.read(BufferedInputStream.java:345) 
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) 
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:286) 
        at java.io.BufferedInputStream.read(BufferedInputStream.java:345) 
        at org.apache.commons.compress.archivers.tar.TarBuffer.readBlock(TarBuffer.java:224) 
        at org.apache.commons.compress.archivers.tar.TarBuffer.readRecord(TarBuffer.java:195) 
        at org.apache.commons.compress.archivers.tar.TarArchiveInputStream.read(TarArchiveInputStream.java:486) 
        at java.io.InputStream.read(InputStream.java:101) 
        at com.pmease.quickbuild.util.FileUtils.untar(FileUtils.java:879) 
        ... 8 more

Perhaps gives the error message a more detailed explanation

  • replies 7
  • views 2285
  • stars 0
robinshen ADMIN ·

This may indicate a server overload when there are many builds publishing artifacts. Can you please if the situation gets better by limiting concurrent builds doing publishing in your system?

Laba42 ·

What is the definition of overload?
When the Publish Artifcat step is executed, approximately 17000 files (~ 2GB) are copied. The target is on a network share.
However, this step is carried out in a maximum of 5 configurations at the same time.

Building a configuration takes about 2 hours and the Publish-Artifcat-Step takes about 2-3 minutes.

Our QB Server (VMWare)
qbServer.png

And the Setting from one Node (we have two of them) These two nodes are real Hardware and here are running our builds

qbNode3.png
robinshen ADMIN ·

To narrow down the issue, can you please first limit the concurrent steps doing publish to just one to see if the problem still happens?

Laba42 ·

If you mean this setting,

Concurrent.png

it's already deactivated. We had never activated this before.

But we have about 60 configurations that have almost the same workflow and build the whole day at different times (scheduler or manually started) and it could be that from these 60 configurations a few Publish Artifact Steps are running at the same time.

robinshen ADMIN ·

You may use below approach to have only one artifact publish step running in the same time:

  1. define a grid resource say "publishing" with only one count on server node
  2. put your artifact publishing step under a new sequential composite step which requires the "publishing" resource
  3. edit node selection setting of your artifact publish step to use below script if it runs on parent node previously:
groovy:
node == step.parent.parent.node
robinshen ADMIN ·

Also I remembered that some other customer experiencing this issue before, and it turns out that the anti-virus software affects the traffic from QB agent to server. Please also check if this is the case at your side.

Laba42 ·

Thanks a lot, but since I'm sick at the moment I'll try it later.