Improve frontend merge request error when Rack Timeout occurs due to gitaly PreReceiveHook operation taking too long
Proposal
A merge request can sometimes contain so many diffs, or be so many commits behind the target branch, that Gitaly operations performed during Push Rule evaluation take >60 seconds to complete and result in a Rack::Timeout::RequestTimeoutException
500 error.
This is displayed in the UI as a Something went wrong during merge pre-receive hook. 500 Internal Server Error. Try again.
error which doesn't help identify the cause or what remedial actions to take. Trying again is unlikely to work. Self-managed customers can review the server logs to identify the cause of the 500 error, but SaaS customers have no option but to contact Support for guidance.
Can the frontend error message be enhanced to include the content of the json.exception.class
and json.exception.message
attributes of the 500 error object logged to gitlab-rails/api_json.log
which in this case are:
json.exception.class Rack::Timeout::RequestTimeoutException
json.exception.message Request ran for longer than 60000ms
and include text such as "Try rebasing the source branch or cherry-picking changes into a new branch".
The objective being to enable customers to self-correct the issue causing the error.
For example: