-
Notifications
You must be signed in to change notification settings - Fork 257
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow @interfaceObject to stand in for all runtime types #3087
Conversation
We sometimes can get multiple paths generated for the same location (cause tbd). When this happens, it breaks the logic when detecting concrete type intersection as one type could potentially be an interfaceObject (and the check should not be run). To be safe, if the type we see does not exist in the list of possible implementation types, skip it from intersection testing.
🦋 Changeset detectedLatest commit: 5a4863a The changes in this PR will be included in the next version bump. This PR includes changesets to release 7 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
✅ Deploy Preview for apollo-federation-docs ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
This pull request is automatically built and testable in CodeSandbox. To see build info of the built libraries, click here or the icon next to each commit SHA. |
Wouldn't it make sense to deduplicate while computing the const filteredPaths = newSubgraphPathInfos.map((p) => p.path.path).filter((p) => isAbstractType(p.tail.type)); Also, I'm concerned about having duplicate paths in |
I'm also concerned about why the duplicate paths exist, and I'm going to keep investigating that. I think that this is an ok compromise as it should unblock the customer and we can deliver a more comprehensive fix shortly. I agree that there is something else wrong, but I think this should be safe. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good! I could reproduce the issue with the included test. And the fix makes sense.
Also, even without duplicate paths, interface object + 2 other paths with abstract types would cause this problem, it seems. We can track the duplicate path issue separately.
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @apollo/composition@2.8.4 ### Patch Changes - When doing interface type intersection detection, allow @interfaceObject to stand in for any type ([#3087](#3087)) - Updated dependencies \[[`5f4bb160d024678d6facd471c43c8ec61c86e701`](5f4bb16), [`672aca7cbeb0a6a38586357a4e154f2dd91caa0c`](672aca7)]: - @apollo/federation-internals@2.8.4 - @apollo/query-graphs@2.8.4 ## @apollo/gateway@2.8.4 ### Patch Changes - Updated dependencies \[[`4d9e0f6390c5114132d205ab73b6aa1b9ffa8cd8`](4d9e0f6), [`5f4bb160d024678d6facd471c43c8ec61c86e701`](5f4bb16), [`672aca7cbeb0a6a38586357a4e154f2dd91caa0c`](672aca7)]: - @apollo/composition@2.8.4 - @apollo/federation-internals@2.8.4 - @apollo/query-planner@2.8.4 ## @apollo/federation-internals@2.8.4 ### Patch Changes - When auto-upgrading schemas from fed1, never add @Shareable on subscription fields. ([#3094](#3094)) - Save time in SchemaUpgrader by pre-computing which subgraphs contain each type ([#3057](#3057)) ## @apollo/query-graphs@2.8.4 ### Patch Changes - Updated dependencies \[[`5f4bb160d024678d6facd471c43c8ec61c86e701`](5f4bb16), [`672aca7cbeb0a6a38586357a4e154f2dd91caa0c`](672aca7)]: - @apollo/federation-internals@2.8.4 ## @apollo/query-planner@2.8.4 ### Patch Changes - Updated dependencies \[[`5f4bb160d024678d6facd471c43c8ec61c86e701`](5f4bb16), [`672aca7cbeb0a6a38586357a4e154f2dd91caa0c`](672aca7)]: - @apollo/federation-internals@2.8.4 - @apollo/query-graphs@2.8.4 ## @apollo/subgraph@2.8.4 ### Patch Changes - Add descriptions for federation directives ([#3095](#3095)) - Updated dependencies \[[`5f4bb160d024678d6facd471c43c8ec61c86e701`](5f4bb16), [`672aca7cbeb0a6a38586357a4e154f2dd91caa0c`](672aca7)]: - @apollo/federation-internals@2.8.4 ## apollo-federation-integration-testsuite@2.8.4 Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Rather than relying on the fact that one filteredPaths is reached, allow @interfaceObject types to intersect with all runtime types