Skip to content
Snippets Groups Projects
user avatar
Will Chandler authored
Gitaly is in the process of implementing a write-ahead log (WAL) for git
operations, which will provide significant benefits for resiliance and
scalability.

This model requires that we have only one Gitaly process running at a
time. However, our current upgrade method keeps the old and new Gitaly
processes running in parallel for an period of time defined by the
administrator.

The `gitaly-wrapper` binary is used by Omnibus to provide a stable pid
to `runit` and sets the `GITALY_UPGRADES_ENABLED` environment variable
that causes Gitaly to perform upgrades with concurrent processes.

To prepare for the deployment of Gitaly's WAL architecture, add a new
`gitaly['use_wrapper']` option which allows admins to execute Gitaly
without the `gitaly-wrapper` binary so that there is never more than one
Gitaly process running at once. This is enabled by default, admins must
opt into the new behavior.

Without the wrapper, sending SIGHUP to Gitaly will cause momentary
service interruptions for git clone operations, ~300ms in our
benchmarks. Read-only web requests will retry automatically for outages
lasting up to 750ms and will handle the upgrade gracefully.

We retain the wrapper for Praefect as this will remain compatible with
running concurrent processes.

Changelog: added
77c9b1eb
History
Name Last commit Last update
..
chef
lib
support
chef_helper.rb
spec_helper.rb