Bamboo ERR_SPDY_PROTOCOL_ERROR message in Google Chrome
Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.
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
Summary
The ERR_SPDY_PROTOCOL_ERROR
message occurs when you click the "View" or "Download" links on the build log in Bamboo. It may also appear on other pages.
Environment
- Bamboo Server or Data Center
- Google Chrome
Cause
SPDY (pronounced "speedy") is a deprecated open-specification communication protocol that was developed primarily at Google for transporting web content. SPDY was an early implementation of the HTTP/2 protocol. More details here: https://en.wikipedia.org/wiki/SPDY.
The ERR_SPDY_PROTOCOL_ERROR
message seems to be specific to Chrome. Parts of Google Chrome still refer to HTTP/2 as SPDY, meaning you may get SPDY messages instead of HTTP/2.
ERR_SPDY_PROTOCOL_ERROR
itself is a generic error message which can have a number of underlying causes. To understand the exact nature of the error, you'll need to dig further into debugging Chrome events. The below third-party article goes into good detail on how you can debug this further and specifically talks about an invalid HTTP header example:
Workaround
As the exact underlying cause may differ and we don't yet have any specific examples of what can cause it specific to Bamboo, for now here are some workarounds that can be attempted:
Option 1: Check your browser
Try the same website using Incognito mode. If you can confirm it works, can you try:
- Updating Chrome - If you are receiving SPDY errors, it means you may be running an old version of Chrome.
- Clear your browser cache (including cookies and cached images and files)
- Flush the SPDY Pockets by accessing the following URL in chrome:
- chrome://net-internals/#events&q=type:SPDY_SESSION%20is:active
- Sockets -> Flush Socket Pools
- chrome://net-internals/#events&q=type:SPDY_SESSION%20is:active
Option 2: Disable HTTP/2 in your Tomcat Connector
You can disable HTTP/2 in your Tomcat connector. That will force Chrome and any other browsers to use HTTP/1.1, which is not compatible with SPDY. Old versions of Chrome still have SPDY enabled.
To disable HTTP/2, please remove/comment the <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol"/>
entry in your $BAMBOO_INSTALL/conf/server.xml
and restart Bamboo.
<Connector
port="8085"
protocol="HTTP/1.1"
maxThreads="150" minSpareThreads="25"
connectionTimeout="20000"
disableUploadTimeout="true"
acceptCount="100"
enableLookups="false"
maxHttpHeaderSize="8192"
useBodyEncodingForURI="true"
URIEncoding="UTF-8"
redirectPort="8443">
<!--<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />-->
</Connector>