-
Suggestion
-
Resolution: Fixed
Problem Definition
If you have a large repository containing binary files merges often take longer than a minute. The error "Server Unreachable" is given even though the merge is still occurring behind the scenes.
Description on https://confluence.atlassian.com/display/STASHKB/Server+Unreachable+-+Timeout+when+merging+or+viewing+Diff+of+pull+request
Cause
The server allows the merge up to 5m (configurable) to complete and the UI (not configurable) would have to be willing to wait the same amount of time the server is willing to wait but it is currently hard-coded (1 minute).
Suggested Solution
It would be good to have a more informative message for these cases, or at least the ability to turn off the error message so that developers don't think that something has gone wrong. A loading bar for these large merges would be ideal.
- has a regression in
-
BSERV-10234 Pull request "canMerge" checks only wait 1 minute before timing out
-
- Closed
-
-
BSERV-12873 On pull requests, the merge UI should not timeout before the server request
-
- Closed
-
- is duplicated by
-
BSERV-8238 Bitbucket UI operations
- Closed
- is related to
-
BSERV-10235 The UI only waits 1 minute for ref sync merges
-
- Closed
-
- mentioned in
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
-
Page Loading...
Form Name |
---|
Gordon,
Git 2.2.x and 2.3.x (all versions) have a known performance issue on NFS. Here's a thread on Nabble about the issue, raised by our own ssaasen. On our NFS-based instances, upgrading to Git 2.5 (or downgrading to Git 2.1.4, which is the last release before the performance regression was introduced) produced extremely significant improvements in merge times. The fix for that performance issue is present in 2.4.7-2.4.10 and all versions from 2.5.0 forward. So if you're using NFS and Git 2.3.x, there's every chance it is an NFS issue. I'm not saying upgrading will make your merges take a few seconds, but there's a good chance it will make them faster.
With respect to merges, I can see where you'd get the idea that's how Stash's merges and pull request creation work, but it's actually not. Allow me to clarify.
When you open a pull request via the UI, you're redirected to the new pull request's overview screen. When you arrive on that screen, the UI makes a REST call to check whether the pull request is mergeable (or has conflicts). That triggers the server to do a "dark" merge of the pull request. That same "dark" merge is used to display the pull request's diff. Unlike other tools, Stash and Bitbucket Server show you the diff of an actual merge, showing you what your changes will look like when applied to the target branch rather than showing you the changes that have been made on the source branch. That's how the system is able to show merge conflicts; you're looking at the actual merge result.
That "dark" merge is 100% separate from the actual merge that happens when you click the "Merge" button. Even the code that creates the two merges is not the same.
The "Merge" button is enabled by default when you view a pull request. This is based on two assumptions which are generally true:
If the "dark" merge reports conflicts, the "Merge" button is disabled. The system caches that "dark" merge, so subsequent views of the pull request, assuming it has not been updated, should disable the "Merge" button very quickly, even if the "dark" merge originally took multiple minutes to perform. On that very first view, though, if your merges are quite slow the "Merge" button might remain enabled for a noticeable period of time before flipping to "disabled".
Best regards,
Bryan Turner
Atlassian Bitbucket
(Please note, I'm just trying to provide some background and raise awareness of a potential performance issue. None of my comments here should be taken to indicate I don't think this is a real issue or to indicate that this issue will not be resolved.)