Cannot Enable Collaborative Editing on Synchrony Cluster (F5 Load Balancer)
Platform Notice: Data Center - This article applies to Atlassian products on the Data Center platform.
Note that this knowledge base article was created for the Data Center version of the product. Data Center knowledge base articles 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
Problem
The Collaborative Editing page hangs when changing the feature mode from Off to On. If we open the Developer Tools feature in the browser and check the Network tab during the attempt of turning Collaborative Editing On, we'll see that the requests that Confluence is making to the URLs below will return the HTTP code 204 instead of 200:
Diagnosis
Environment
Confluence Data Center
- Synchrony Cluster that is not self-managed by Confluence (6.13+), meaning that the start-synchrony script is in use and a specific proxy for Synchrony is set up
- There's a F5 Load Balancer in front of Confluence (although this could affect other Load Balancers too)
- Synchrony Cluster starts up and is returns the expected response in the heartbeat, meaning that it is working as expected
Diagnostic Steps
Start Confluence Data Center
- Start Synchrony Cluster
- Go to the Administration section of Confluence, then access the Collaborative Editing page
- Open the Developer Tools in your browser and go to the Network tab
In Confluence, try to change the Collaborative Editing mode from Off to On
The requests to the URLs rest/synchrony-interop/status and rest/synchrony-interop/synchrony-status will return HTTP 204 (No Content) instead of HTTP 200 (OK).
Cause
The F5 Load Balancer is configured to forward every request that contains synchrony in the URL to the Synchrony service. However, as outlined in our proxy configuration guidelines, the correct configuration for Synchrony on the proxy server is to redirect any request that begins with /synchrony to the Synchrony service accordingly.
Resolution
Update the Load Balancer rule to use starts_with instead of contains, since the synchrony-interop plugin is part of the Confluence application and requests to that should be handled by Confluence instead of Synchrony. Here is a sample configuration that can be used on F5:
if { [HTTP::host] equals "<Confluence Domain>" and [string to lower [HTTP::uri]] starts_with "/synchrony" } {
pool <Synchrony Server Pool Name>
} else {
pool <Confluence Server Pool Name>
}
}