[FF] graphql_caller_id_with_operation_name -- Add GraphQL operation name to caller_id
Summary
Roll out the feature currently behind the graphql_caller_id_with_operation_name feature flag.
- DRI: @stanhu
- Team Slack channel:
#g_organizations
Note
Process and guidance live in the docs — this issue is just the commands and a place to track the rollout. "Rolling out" means incrementally enabling the flag on GitLab.com to validate stability — it is not the same as releasing the feature, which happens when the flag is removed. Feature flag controls · Feature flag lifecycle
The flag makes the GraphQL caller_id include the operation name, for example GraphqlController#execute:getProjects instead of the generic GraphqlController#execute. Only operations in the frontend KnownOperations allowlist are used; everything else keeps the base value. Introduced in !250311 (merged).
What could go wrong?
- For known operations, the
endpoint_idlabel on therails_requestSLI changes from the singleGraphqlController#executeto one value per operation. It is bounded by the allowlist, so no unbounded cardinality, but dashboards or alerts that match the exact stringGraphqlController#executefor GraphQL will then catch only unknown operations. A prefix match still catches everything. caller_idis also forwarded to Gitaly (!250312 (merged)). Attribution is best-effort, not a trust signal.- Dashboards to watch: the Rails request Apdex and error-rate SLIs on https://dashboards.gitlab.net.
Rollout
Run all production /chatops in #production and cross-post the results to #g_organizations. Background: incremental rollout process, feature actors.
Non-production
/chatops gitlab run feature set graphql_caller_id_with_operation_name 50 --actors --dev --pre --staging --staging-ref
/chatops gitlab run feature set graphql_caller_id_with_operation_name true --dev --pre --staging --staging-refProduction — percentage rollout (wait ≥15 min between steps, watch dashboards):
/chatops gitlab run feature set graphql_caller_id_with_operation_name <percentage> --actorsOr target specific actors instead:
/chatops gitlab run feature set --project=gitlab-org/gitlab,gitlab-org/gitlab-foss graphql_caller_id_with_operation_name true
/chatops gitlab run feature set --group=gitlab-org,gitlab-com graphql_caller_id_with_operation_name true
/chatops gitlab run feature set --user=stanhu graphql_caller_id_with_operation_name trueBefore global rollout
Confirm the relevant gotchas before going to 100% — see enabling a feature for GitLab.com:
- Docs + version history updated
- Breaking changes announced, if any
- Change management issue opened, if required
- External API consumers handled with a fail-open mechanism, if applicable
Cleanup
Remove the flag once deemed stable — see cleaning up. Track it here, or open a follow-up Feature Flag Cleanup issue. Remove the flag and its YAML definition from the codebase, then:
/chatops gitlab run release check <merge-request-url> <milestone>
/chatops gitlab run feature delete graphql_caller_id_with_operation_name --dev --pre --staging --staging-ref --productionRollback
/chatops gitlab run feature set graphql_caller_id_with_operation_name false # production
/chatops gitlab run feature set graphql_caller_id_with_operation_name false --dev --pre --staging --staging-ref # non-production
/chatops gitlab run feature delete graphql_caller_id_with_operation_name --dev --pre --staging --staging-ref --production # remove entirely