Remove GraphQL GlobalIDType compatibility layer
In !36209 (merged) a compatibility layer was introduced to allow us to change the types
of arguments from ID_TYPE
to GlobalIDType[T]
. This requires us to be careful and add
lots of explicit coercions.
This issue is for the removal of the compatibility layer once the deprecation cycle has been run, and all stakeholders informed.
During %14.8
Manage deprecation: #352832 (closed)
-
Update the deprecation list including this changes https://docs.gitlab.com/ee/update/deprecations.html
- see: !80636 (merged)
- Update the milestone to %14.10
During %14.10 or %15.0
- Remove the compatibility layer introduced in !36209 (merged), which overrides the type equality check.
- Remove all the explicit coercions, marked where possible with TODOs
-
Ensure arguments are
required:
as appropriate (see !46491 (comment 439169712))
Designs
- Show closed items
Blocks
- #288801Backlog
Is blocked by
Activity
-
Newest first Oldest first
-
Show all activity Show comments only Show history only
- Maintainer
Hi @alexkalderimis,
Please add labels to your issue, this aids categorization and locating issues in the future.
Thanks for your help!
You are welcome to help improve this comment.
- 🤖 GitLab Bot 🤖 added auto updated label
added auto updated label
- Alex Kalderimis added GraphQL typemaintenance labels
added GraphQL typemaintenance labels
- 🤖 GitLab Bot 🤖 added typefeature label
added typefeature label
- Alex Kalderimis mentioned in merge request !36115 (merged)
mentioned in merge request !36115 (merged)
- Alex Kalderimis changed the description
Compare with previous version changed the description
- Alex Kalderimis mentioned in merge request !44553 (merged)
mentioned in merge request !44553 (merged)
- charlie ablett marked this issue as related to #288801
marked this issue as related to #288801
- charlie ablett mentioned in issue #288801
mentioned in issue #288801
- Bob Van Landuyt mentioned in merge request !49342 (merged)
mentioned in merge request !49342 (merged)
- Philip Cunningham mentioned in merge request !53432 (merged)
mentioned in merge request !53432 (merged)
- Alex Kalderimis mentioned in merge request !43333 (closed)
mentioned in merge request !43333 (closed)
- Heinrich Lee Yu mentioned in merge request !55439 (merged)
mentioned in merge request !55439 (merged)
- Alex Kalderimis mentioned in merge request !56647 (closed)
mentioned in merge request !56647 (closed)
- Mario Celi mentioned in merge request !67083 (merged)
mentioned in merge request !67083 (merged)
- Maintainer
@alexkalderimis oof, did we miss an opportunity to remove this in 14.0?
Collapse replies - Author Contributor
Probably - I'll ensure this is sceduled for 14.6.
- Author Contributor
Apologies for missing %14.6 @digitalmoksha
- Maintainer
Ha, no worries. I've gone ahead and set a Due Date of April 17th, so that we get a reminder to that it's coming due to be scheduled/assigned for %15.0
- 🤖 GitLab Bot 🤖 removed typefeature label
removed typefeature label
- Michał Zając mentioned in merge request !77372 (merged)
mentioned in merge request !77372 (merged)
- Alex Kalderimis mentioned in merge request !36209 (merged)
mentioned in merge request !36209 (merged)
- Alex Kalderimis changed milestone to %15.0
changed milestone to %15.0
- Author Contributor
@arturoherrero - fyi. We should schedule this for %15.0
If we can schedule it earlier, that would be nice as well, at this imposes a development burden.
Collapse replies - Maintainer
@alexkalderimis Thanks for letting me know. cc. @g.hickman
I have a few questions:
- In the description, we can read
all stakeholders informed
. Has this already happened, or do we need to do something else? Maybe we have to add an entry in https://docs.gitlab.com/ee/update/deprecations.html. - Do we need to work on this issue exactly at 15.0, or can we do it early, eg. 14.10?
- Can you weigh the issue, please?
- In the description, we can read
- Author Contributor
Has this already happened, or do we need to do something else? Maybe we have to add an entry in https://docs.gitlab.com/ee/update/deprecations.html.
It is not present in that list. I will get it added.
Do we need to work on this issue exactly at 15.0, or can we do it early, eg. 14.10?
We can probably do it earlier. I'm not entirely sure whose sign-off we would need
Can you weigh the issue, please?
Certainly - this is fairly mechanical really (lots of TODO comments, a few tests that will need to be deleted). I would weight it as backend-weight2
- Developer
@alexkalderimis @arturoherrero Will this be a breaking change or what is the customer impact? If it's not a breaking change, we should be able to release sooner and just be sure to announce it 2 milestones prior to the removal.
- Author Contributor
It is not expected to be a breaking change, except in some very rare cases.
If a client somewhere out there is sending queries such as:
query($id: ID!) { issue(id: $id) { title description } }
with variables:
{ "id": "gid://gitlab/Issue/102188595" }
which we accept right now, it will stop working. Instead they should send:
query($id: IssueID!) { issue(id: $id) { title description } }
(the variables will not have to change).
That is the extent of the breakage - types named in query signatures might need updating. Values included inline will not need to be changed, which means this query:
query { issue(id: "gid://gitlab/Issue/102188595") { title description } }
will work just fine.
The reason I say that breakage is unlikely is that users would have literally no reason to use
ID
. If you look at the docs for these features, they all list the correct argument types, eg.gql> :type Query.issue Issue Find an issue. arguments: ┌───────┬─────────────┬─────────────────────────────────────┬──────────────────┐ │name │type │description │deprecated? │ ├───────┼─────────────┼─────────────────────────────────────┼──────────────────┤ │id │IssueID! │Global ID of the issue. │No │ └───────┴─────────────┴─────────────────────────────────────┴──────────────────┘
and they have done for about over a year. Any user building a query will use the correct types. All our own queries have been updated.
If we are very worried, we can delay doing this until we put in some monitoring to determine how frequently users are passing in the wrong type to get a sense of the scale of any disruption. I would estimate the effort of introducing this monitoring as about backend-weight2 (we have very obvious places to put these logs).
Thoughts @g.hickman, @arturoherrero
Edited by Alex Kalderimis - Developer
That's super helpful @alexkalderimis. My vote is that we can remove early and we can communicate the minor risk ahead of time unless @arturoherrero objects.
- Maintainer
@g.hickman @alexkalderimis Sounds good. I'm updating the description with the following plan:
1
- Brett Walker changed due date to April 17, 2022
changed due date to April 17, 2022
- 🤖 GitLab Bot 🤖 added [deprecated] Accepting merge requests label
added [deprecated] Accepting merge requests label
- Arturo Herrero added Category:API backend groupintegrations [DEPRECATED] labels
added Category:API backend groupintegrations [DEPRECATED] labels
- Alex Kalderimis set weight to 2
set weight to 2
- Maintainer
Setting label(s) devopsecosystem sectiondev based on ~"group::integrations".
- 🤖 GitLab Bot 🤖 added sectiondev + 1 deleted label
added sectiondev + 1 deleted label
- Arturo Herrero changed milestone to %14.8
changed milestone to %14.8
- Arturo Herrero added Stretch label
added Stretch label
- Arturo Herrero assigned to @alexkalderimis
assigned to @alexkalderimis
- Arturo Herrero changed the description
Compare with previous version changed the description
- 🤖 GitLab Bot 🤖 removed [deprecated] Accepting merge requests label
removed [deprecated] Accepting merge requests label
- Alex Kalderimis mentioned in merge request !80636 (merged)
mentioned in merge request !80636 (merged)
- Alex Kalderimis marked the checklist item Update the deprecation list including this changes https://docs.gitlab.com/ee/update/deprecations.html as completed
marked the checklist item Update the deprecation list including this changes https://docs.gitlab.com/ee/update/deprecations.html as completed
- Alex Kalderimis added workflowin dev label
added workflowin dev label
- Alex Kalderimis mentioned in issue #352832 (closed)
mentioned in issue #352832 (closed)
- Alex Kalderimis changed the description
Compare with previous version changed the description
- Arturo Herrero marked this issue as related to #352832 (closed)
marked this issue as related to #352832 (closed)
- Alex Kalderimis changed milestone to %14.10
changed milestone to %14.10
- Alex Kalderimis marked the checklist item Update the milestone to %14.10 as completed
marked the checklist item Update the milestone to %14.10 as completed
- Alex Kalderimis mentioned in merge request !83457 (merged)
mentioned in merge request !83457 (merged)
- Alex Kalderimis marked the checklist item Remove the compatibility layer introduced in !36209 (merged), which overrides as completed
marked the checklist item Remove the compatibility layer introduced in !36209 (merged), which overrides as completed
- Alex Kalderimis marked the checklist item Remove all the explicit coercions, marked where possible with TODOs as completed
marked the checklist item Remove all the explicit coercions, marked where possible with TODOs as completed
- Alex Kalderimis mentioned in merge request !83640 (merged)
mentioned in merge request !83640 (merged)
- Author Contributor
The removal MR has been split into two: !83640 (merged) and !83457 (merged)
The former blocks the latter, since we have to update some front-end queries that still have the old types in them (and we need to sequence these changes for safety).
We also have to determine if a compatibility feature for iteration cadences can be removed - if not then this will require a schema change and require moving !83457 (merged) to %15.0.
- Alex Kalderimis added workflowin review label and removed workflowin dev label
added workflowin review label and removed workflowin dev label
- euko mentioned in merge request !84052 (merged)
mentioned in merge request !84052 (merged)
- euko marked this issue as related to #357461 (closed)
marked this issue as related to #357461 (closed)
- euko mentioned in issue #357461 (closed)
mentioned in issue #357461 (closed)