[Feature flag] Enable interception of the `ReplicateRepository` RPC in Praefect
What
Enable the :gitaly_intercept_replicate_repository
feature flag, which enables Praefect to intercept the ReplicateRepository
RPC. This will allow Praefect to support object pool replication.
Owners
- Team: Gitaly
- Most appropriate slack channel to reach out to:
#g_gitaly
- Best individual to reach out to: @justintobler
Expectations
What release does this feature occur in first?
What are we expecting to happen?
When the feature flag is enabled, Praefect will intercept all invocations of the ReplicateRepository
RPC and rewrite the ReplicateObjectDeduplicationNetworkMembership
request field to be false
. As there is currently no clients that invoke this RPC with the field set to true
, functional there should be no change to the operation of the RPC.
What might happen if this goes wrong?
If there is a problem with the RPC handler that rewrites the request message, Praefect ReplicateRepository
calls could fail until the feature flag is disabled.
What can we monitor to detect problems with this?
An uptick in ReplicateRepository
RPC failures for Praefect deployments would indicate that there is a problem with this feature.
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.