[Feature flag] Enable writing bitmap lookup tables
What
Enable the :gitaly_write_bitmap_lookup_table
feature flag, which enables writing bitmap lookup tables during repository maintenance. Lookup tables are a recent addition that has been released with Git v2.38.0. If this extension is present in the on-disk bitmaps, then Git is able to defer loading bitmaps until they're really required.
As loading bitmaps scales with the bitmap size, and many Git commands do use bitmaps, this ultimately means that we can expect to offload that constant loading time in many cases.
Rolls out !5278 (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?
We should see that repository housekeeping starts to write bitmap lookup tables. Ideally, some operations may see small speedups. This is more likely to manifest in large repositories with huge bitmaps.
What might happen if this goes wrong?
The bitmap may become corrupted.
What can we monitor to detect problems with this?
- Gitaly housekeeping statistics.
- General Gitaly health.
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.