[Feature flag] Enable atomic repository creation
What
Enable the :gitaly_tx_atomic_repository_creation
feature flag, which enables new semantics for RPCs creating repositories. With this flag enabled, all RPCs which create repositories will now fail when the target repository exists already. Furthermore, the new repository is being created in a temporary staging environment and, after it's been seeded, it will be atomically renamed into place with proper locking.
Owners
- Team: Gitaly
- Most appropriate slack channel to reach out to:
#g_create_gitaly
- Best individual to reach out to: pks-t
Expectations
What release does this feature occur in first?
What are we expecting to happen?
Repositories should be created atomically. If seeding the repository fails, then the target path should not have been touched. Concurrent creation of repos will now fail as expected. Creation of repositories will now fail if the target repository exists already.
What might happen if this goes wrong?
One may see issues with repository creation.
What can we monitor to detect problems with this?
- CreateRepository feature status
- CreateRepositoryFromURL feature status
- CreateRepositoryFromBundle feature status
- CreateRepositoryFromSnapshot feature status
- CreateFork feature status
Roll Out Steps
-
Read the documentation of feature flags -
Add featureflagstaging to this issue (howto) -
Is the required code deployed? (howto) -
Do we need to create a change management issue? (howto) -
Enable on staging (howto) -
Test on staging (howto) -
Verify the feature flag was used by checking Prometheus metric gitaly_feature_flag_checks_total
-
Announce on this issue an estimated time this will be enabled on GitLab.com -
Add featureflagproduction to this issue -
Enable on GitLab.com by running chatops command in #production
(howto) -
Cross post chatops slack command to #support_gitlab-com
and in your team channel -
Verify the feature flag is being used by checking Prometheus metric gitaly_feature_flag_checks_total
-
Announce on the issue that the flag has been enabled -
Did you set the feature to both 100%
andtrue
(howto) -
Submit a MR to have the feature OnByDefault: true
and add changelog entry (howto) -
Have that MR merged -
Possibly wait for at least one deployment cycle (howto) -
Submit an MR to remove the pre-feature code from the codebase and add changelog entry (howto) -
Have that MR merged -
Remove the feature flag via chatops (howto) -
Close this issue
Edited by Patrick Steinhardt