Agent upload of artifacts fails to set Content-Length in HTTP/1.1

Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.

Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Symptoms

Your build is running on a remote agent and after the build, the artifact failed to get transferred to the server. The following appears in the log files:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 NFO | jvm 1 | 2013/03/15 15:02:48 | 2013-03-15 15:02:48,669 ERROR [1-BAM::bamboo-agent1.seres.no::Agent:pool-3-thread-1] [BambooPluginUtils] Unable to publish artifact Shared artifact: [Clover Report (System)], pattern: [**/*.*] anchored at[/target/site/clover] for TESTA-TSTA-JOB1-26 via com.atlassian.bamboo.build.artifact.BambooRemoteArtifactHandler@2c582fc6 INFO | jvm 1 | 2013/03/15 15:02:48 | java.lang.RuntimeException: java.io.IOException: Unexpected HTTP status code: 411 Length Required INFO | jvm 1 | 2013/03/15 15:02:48 | at com.atlassian.bamboo.v2.build.agent.remote.sender.HttpMessageSender.send(HttpMessageSender.java:106) INFO | jvm 1 | 2013/03/15 15:02:48 | at com.atlassian.bamboo.build.artifact.BambooRemoteArtifactHandler.publish(BambooRemoteArtifactHandler.java:35) INFO | jvm 1 | 2013/03/15 15:02:48 | at com.atlassian.bamboo.build.artifact.AbstractArtifactManager$2.call(AbstractArtifactManager.java:262) INFO | jvm 1 | 2013/03/15 15:02:48 | at com.atlassian.bamboo.build.artifact.AbstractArtifactManager$2.call(AbstractArtifactManager.java:255) INFO | jvm 1 | 2013/03/15 15:02:48 | at com.atlassian.bamboo.plugin.BambooPluginUtils.callUnsafeCode(BambooPluginUtils.java:82) INFO | jvm 1 | 2013/03/15 15:02:48 | at com.atlassian.bamboo.build.artifact.AbstractArtifactManager.publishFileSet(AbstractArtifactManager.java:254) INFO | jvm 1 | 2013/03/15 15:02:48 | at com.atlassian.bamboo.build.artifact.AbstractArtifactManager.publish(AbstractArtifactManager.java:154) INFO | jvm 1 | 2013/03/15 15:02:48 | at com.atlassian.bamboo.build.artifact.BuildArtifactPostProcessor.call(BuildArtifactPostProcessor.java:81) INFO | jvm 1 | 2013/03/15 15:02:48 | at com.atlassian.bamboo.build.pipeline.tasks.ExecuteBuildTask.performCustomBuildProcess(ExecuteBuildTask.java:164) INFO | jvm 1 | 2013/03/15 15:02:48 | at com.atlassian.bamboo.build.pipeline.tasks.ExecuteBuildTask.call(ExecuteBuildTask.java:90) INFO | jvm 1 | 2013/03/15 15:02:48 | at com.atlassian.bamboo.v2.build.agent.DefaultBuildAgent.build(DefaultBuildAgent.java:206) INFO | jvm 1 | 2013/03/15 15:02:48 | at com.atlassian.bamboo.v2.build.agent.BuildAgentControllerImpl.waitAndPerformBuild(BuildAgentControllerImpl.java:103) INFO | jvm 1 | 2013/03/15 15:02:48 | at com.atlassian.bamboo.v2.build.agent.DefaultBuildAgent$1.run(DefaultBuildAgent.java:111) INFO | jvm 1 | 2013/03/15 15:02:48 | at com.atlassian.bamboo.build.pipeline.concurrent.NamedThreadFactory$2.run(NamedThreadFactory.java:52) INFO | jvm 1 | 2013/03/15 15:02:48 | at java.lang.Thread.run(Thread.java:722) INFO | jvm 1 | 2013/03/15 15:02:48 | Caused by: java.io.IOException: Unexpected HTTP status code: 411 Length Required INFO | jvm 1 | 2013/03/15 15:02:48 | at com.atlassian.bamboo.v2.build.agent.remote.sender.HttpMessageSender.send(HttpMessageSender.java:100) INFO | jvm 1 | 2013/03/15 15:02:48 | ... 14 more

Cause

Bamboo Agent artifact upload uses HTTP/1.1 feature "Chunked Transfer Coding" (as defined in http://www.apps.ietf.org/rfc/rfc2616.html#sec-3.6.1).

According to specification header "Transfer-Encoding: chunked" is added to the stream and "Content-Length: " header is no longer needed.

Lighttpd and old versions of Nginx don't fully implement HTTP/1.1, so can't be used as a reverse proxy with Bamboo.

Resolution

Switch to a proxy server that fully supports HTTP/1.1.

Some options are Apache httpd, or Nginx version 1.3.9 or later.

Updated on April 8, 2025

Still need help?

The Atlassian Community is here for you.