When fetching (not cloning; fetches only, where the local repository already has some refs) or pushing via HTTP(S), the git http-backend process on the server can exhibit odd behaviors. Some observed behaviors include:
- Hanging at high CPU usage
- Unexpected termination
This only affects instances which are using an SSL connector in Tomcat. Additionally, it only impacts Bitbucket Server 7.1.0, specifically. Bitbucket Server 7.0.x releases, and Bitbucket Server 7.1.1 and newer will not be affected.
There are no specific steps to reliably reproduce this behavior, at least so far. Whether or not it happens depends on several environmental factors. The triggers are either git fetch or git push using an HTTP(S) remote, but simply doing those is not guaranteed to cause an issue consistently.
Fetching and pushing via HTTP(S) should work stably.
Sporadic failures occur, with a range of symptoms, including:
- "Hung" git http-backend processes, which sometimes spin at high CPU usage
- Exceptions in the log file (see below)
- Running out of "scm-hosting" tickets
For some environments the failures appear to be more consistent than for others, and many environments don't appear to have any issues at all.
Exceptions observed include the following:
However, this failure can happen with no exceptions on the server at all.
Clients may observe errors like the following:
The error can vary from these; these are just some examples of the failures that have been observed on the client side.
For organizations that require SSL on Tomcat, and require developers/CI/etc. to use HTTPS for Git hosting, there are no workarounds for this issue. The issue can be avoided by:
- Switching to SSH, or
- Introducing a load balancer or reverse proxy in front of Bitbucket Server to terminate SSL
(Those workarounds may not be readily possible for all organizations.)
Do not attempt to downgrade from Bitbucket Server 7.1.0 to 7.0.x without restoring from a backup. There are database schema changes in 7.1.0 that will break 7.0.x.