[Feature flag] Enable reading and writing commit-graph generation data
What
Enable the :gitaly_use_commit_graph_generation_data
feature flag, which enables use of commit-graph generation data. Right now we explicitly disable both reading and writing generation
numbers by setting the unintuitive commitGraph.generationVersion=1
.
This had to be done because a patch series that fixed several bugs in
the context of commit-graphs introduced with Git v2.36.0 actually
uncovered a different bug that caused corruption when upgrading graphs
that contained a v1 generation data.
This source of corruption was finally fixed in 9550f6c16a (commit-graph: fix corrupt upgrade from generation v1 to v2, 2022-07-12), which is contained in Git v2.37.2 and newer. So with the feature flag enabled, we start to write and read the generation data again.
Rolls out !5211 (merged).
Owners
- Team: Gitaly
- Most appropriate slack channel to reach out to:
#g_gitaly
- Best individual to reach out to: pks-t
Expectations
What release does this feature occur in first?
What are we expecting to happen?
Commit-graph generation data should start to be used again. No user-visible change in behaviour should occur.
What might happen if this goes wrong?
In the worst case the commit-graph generation data may cause the graphs to become corrupted. While this may render a repository unusable, it would not lead to data loss as the commit-graph is simply a cache.
What can we monitor to detect problems with this?
Roll Out Steps
-
Enable on staging -
Is the required code deployed on staging? (howto) -
Enable on staging (howto) -
Add featureflagstaging to this issue (howto) -
Test on staging (howto) -
Verify the feature flag was used by checking Prometheus metric gitaly_feature_flag_checks_total
-
-
Enable on production -
Is the required code deployed on production? (howto) -
Progressively enable in production (howto) -
Add featureflagproduction to this issue -
Verify the feature flag was used by checking Prometheus metric gitaly_feature_flag_checks_total
-
-
Default-enable the feature flag (optional, only required if backwards-compatibility concerns exist) -
Wait for release containg default-disabled feature flag. -
Change the feature flag to default-enabled (howto) -
Wait for release containing default-enabled feature flag.
-
-
Remove feature flag
Please refer to the documentation of feature flags for further information.