Analyse GraphQL issue in mixed deployment scenario
Problem
Self-managed customer has GitLab setup as one node that is Web only and another that is API only through a load balancer.
When they upgraded their Web node from 14.3.6 to 14.4.5, they saw the following errors:
{"method":"POST","path":"/ci/api/v1/builds/register.json","format":"json","controller":"ApplicationController","action":"route_not_found","status":422,"time":"2022-02-07T17:05:37.625Z"
bundle.esm.js:63 Uncaught (in promise) Error: GraphQL error: Field 'paginatedTree' doesn't exist on type 'Repository'
GraphQL error: Variable $path is declared by getPaginatedTree but not used
GraphQL error: Variable $ref is declared by getPaginatedTree but not used
GraphQL error: Variable $nextPageCursor is declared by getPaginatedTree but not used
GraphQL error: Fragment TreeEntry was defined, but not used
at new t (bundle.esm.js:63)
at bundle.esm.js:1247
at bundle.esm.js:1559
at Set.forEach (<anonymous>)
at bundle.esm.js:1557
at Map.forEach (<anonymous>)
at e.broadcastQueries (bundle.esm.js:1555)
at bundle.esm.js:1646
at Object.next (Observable.js:308)
at m (Observable.js:130)
Root cause: paginated_tree_graphql_query
was enabled in 14.4 by default, so when Web node was on 14.4 and the API nodes were on 14.3 the FE would've had the feature enabled but the BE would've had it disabled, resulting in this error.
Slack discussion (internal only): https://gitlab.slack.com/archives/C6MLS3XEU/p1644255576088619
Solution
- Analyse GraphQL issue in mixed deployment scenario and why it wasn't caught in GitLab.com mixed deployment scenario
- Explore if we need to set up framework to test major releases in mixed deployment scenario for self-managed