Fix hardcoded timeouts
Context
Customers have been experiencing connection timeouts when performing certain Git operations on large repositories, or performing commands in parallel. See gitlab#358001 and #5351 (closed) for examples.
These timeouts occur during the negotiation phase of the git-upload-pack(1)
and git-upload-archive(1)
commands, which are invoked by a Gitaly node in response to a fetch or archive --remote
operation. The timeouts were first introduced to limit the duration of the negotiation phase, and are disarmed when Git emits a flush packet.
Unfortunately, it seems like we're hitting the hardcoded timeouts unexpectedly, and we don't have a way for users to override these timeouts.
Proposal
Exposing these in configuration would be the easiest way forward. We can add a new configuration section to the Gitaly TOML called [timeout]
, with settings to override the two hardcoded timeout values.