Skip to content
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

Fix relative path logic when eliding subgraph jump for @fromContext #3005

Merged

Conversation

sachindshinde
Copy link
Contributor

@sachindshinde sachindshinde commented May 14, 2024

This PR makes some changes to #2988, specifically:

  • It fixes a bug where the relative path is computed incorrectly when a subgraph jump is skipped/elided in the case of @fromContext.
  • It changes the selection-set-to-renamer conversion logic to create multiple inline fragments instead of introducing a new syntax, in the case of a type condition on an abstract type. (This saves us from having to update router to understand it.)
  • It tweaks the iteration over the GraphPath in canSatisfyConditions() to be cleaner/easier to understand.
    • When I looked at that code again, I noticed it was strange that we initialized levelsInDataPath at 1 even though we aren't guaranteed that the last element in GraphPath is a field. The gist is that at the first match, we know it's a field, so that ends up being okay. But I think it's easier to understand code-wise if both levelsInQueryPath and levelsInDataPath start off at 0, and every time we get a new element (at the start of the for block) we increment the counts accordingly.

@sachindshinde sachindshinde requested a review from a team as a code owner May 14, 2024 04:26
Copy link

changeset-bot bot commented May 14, 2024

🦋 Changeset detected

Latest commit: fcbed84

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 7 packages
Name Type
@apollo/query-planner Patch
@apollo/gateway Patch
@apollo/federation-internals Patch
@apollo/composition Patch
@apollo/query-graphs Patch
@apollo/subgraph Patch
apollo-federation-integration-testsuite Patch

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

Copy link

codesandbox-ci bot commented May 14, 2024

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.

@clenfest clenfest merged commit daf36bd into apollographql:next May 14, 2024
13 checks passed
clenfest pushed a commit that referenced this pull request May 17, 2024
# Releases
## @apollo/composition@2.8.0-alpha.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

### Patch Changes

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da)]:
    -   @apollo/query-graphs@2.8.0-alpha.0
    -   @apollo/federation-internals@2.8.0-alpha.0

## @apollo/gateway@2.8.0-alpha.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

### Patch Changes

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da),
[`daf36bd242ba4db0cfcf0e18c1eed235ff0dfaf2`](daf36bd)]:
    -   @apollo/query-planner@2.8.0-alpha.0
    -   @apollo/composition@2.8.0-alpha.0
    -   @apollo/federation-internals@2.8.0-alpha.0

## @apollo/federation-internals@2.8.0-alpha.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

## @apollo/query-graphs@2.8.0-alpha.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

### Patch Changes

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da)]:
    -   @apollo/federation-internals@2.8.0-alpha.0

## @apollo/query-planner@2.8.0-alpha.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

### Patch Changes

- Fix relative path logic when eliding subgraph jumps for `@fromContext`
([#3005](#3005))

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da)]:
    -   @apollo/query-graphs@2.8.0-alpha.0
    -   @apollo/federation-internals@2.8.0-alpha.0

## @apollo/subgraph@2.8.0-alpha.0

### Patch Changes

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da)]:
    -   @apollo/federation-internals@2.8.0-alpha.0

## apollo-federation-integration-testsuite@2.8.0-alpha.0

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
clenfest pushed a commit that referenced this pull request May 29, 2024
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 next, this PR will
be updated.


# Releases
## @apollo/composition@2.8.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

### Patch Changes

- Various set context bugfixes
([#3017](#3017))

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da),
[`8a936d741a0c05835ff2533714cf330d18209179`](8a936d7),
[`f5fe3e74d36722f78004c1e2e03c77d8b95cd6bf`](f5fe3e7)]:
    -   @apollo/query-graphs@2.8.0
    -   @apollo/federation-internals@2.8.0

## @apollo/gateway@2.8.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

### Patch Changes

- Various set context bugfixes
([#3017](#3017))

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da),
[`8a936d741a0c05835ff2533714cf330d18209179`](8a936d7),
[`daf36bd242ba4db0cfcf0e18c1eed235ff0dfaf2`](daf36bd)]:
    -   @apollo/query-planner@2.8.0
    -   @apollo/composition@2.8.0
    -   @apollo/federation-internals@2.8.0

## @apollo/federation-internals@2.8.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

### Patch Changes

- Various set context bugfixes
([#3017](#3017))

## @apollo/query-graphs@2.8.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

### Patch Changes

- Various set context bugfixes
([#3017](#3017))

- Fix bug in context-matching logic for
interfaces-implementing-interfaces (#3014)
([#3015](#3015))

A field is considered to match a context if the field's parent type (in
the original query) either has `@context` on it, or implements/is a
member of a type with `@context` on it. We ended up missing the case
where interfaces implement interfaces; this PR introduces a fix.

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da),
[`8a936d741a0c05835ff2533714cf330d18209179`](8a936d7)]:
    -   @apollo/federation-internals@2.8.0

## @apollo/query-planner@2.8.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

### Patch Changes

- Various set context bugfixes
([#3017](#3017))

- Fix relative path logic when eliding subgraph jumps for `@fromContext`
([#3005](#3005))

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da),
[`8a936d741a0c05835ff2533714cf330d18209179`](8a936d7),
[`f5fe3e74d36722f78004c1e2e03c77d8b95cd6bf`](f5fe3e7)]:
    -   @apollo/query-graphs@2.8.0
    -   @apollo/federation-internals@2.8.0

## @apollo/subgraph@2.8.0

### Patch Changes

- Various set context bugfixes
([#3017](#3017))

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da),
[`8a936d741a0c05835ff2533714cf330d18209179`](8a936d7)]:
    -   @apollo/federation-internals@2.8.0

## apollo-federation-integration-testsuite@2.8.0

### Patch Changes

- Various set context bugfixes
([#3017](#3017))

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Meschreiber pushed a commit that referenced this pull request Jun 17, 2024
…#3005)

This PR makes some changes to #2988, specifically:
- It fixes a bug where the relative path is computed incorrectly when a
subgraph jump is skipped/elided in the case of `@fromContext`.
- It changes the selection-set-to-renamer conversion logic to create
multiple inline fragments instead of introducing a new syntax, in the
case of a type condition on an abstract type. (This saves us from having
to update router to understand it.)
- It tweaks the iteration over the `GraphPath` in
`canSatisfyConditions()` to be cleaner/easier to understand.
- When I looked at that code again, I noticed it was strange that we
initialized `levelsInDataPath` at `1` even though we aren't guaranteed
that the last element in `GraphPath` is a field. The gist is that at the
first match, we know it's a field, so that ends up being okay. But I
think it's easier to understand code-wise if both `levelsInQueryPath`
and `levelsInDataPath` start off at 0, and every time we get a new
element (at the start of the `for` block) we increment the counts
accordingly.
Meschreiber pushed a commit that referenced this pull request Jun 17, 2024
# Releases
## @apollo/composition@2.8.0-alpha.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

### Patch Changes

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da)]:
    -   @apollo/query-graphs@2.8.0-alpha.0
    -   @apollo/federation-internals@2.8.0-alpha.0

## @apollo/gateway@2.8.0-alpha.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

### Patch Changes

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da),
[`daf36bd242ba4db0cfcf0e18c1eed235ff0dfaf2`](daf36bd)]:
    -   @apollo/query-planner@2.8.0-alpha.0
    -   @apollo/composition@2.8.0-alpha.0
    -   @apollo/federation-internals@2.8.0-alpha.0

## @apollo/federation-internals@2.8.0-alpha.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

## @apollo/query-graphs@2.8.0-alpha.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

### Patch Changes

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da)]:
    -   @apollo/federation-internals@2.8.0-alpha.0

## @apollo/query-planner@2.8.0-alpha.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

### Patch Changes

- Fix relative path logic when eliding subgraph jumps for `@fromContext`
([#3005](#3005))

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da)]:
    -   @apollo/query-graphs@2.8.0-alpha.0
    -   @apollo/federation-internals@2.8.0-alpha.0

## @apollo/subgraph@2.8.0-alpha.0

### Patch Changes

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da)]:
    -   @apollo/federation-internals@2.8.0-alpha.0

## apollo-federation-integration-testsuite@2.8.0-alpha.0

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Meschreiber pushed a commit that referenced this pull request Jun 17, 2024
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 next, this PR will
be updated.


# Releases
## @apollo/composition@2.8.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

### Patch Changes

- Various set context bugfixes
([#3017](#3017))

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da),
[`8a936d741a0c05835ff2533714cf330d18209179`](8a936d7),
[`f5fe3e74d36722f78004c1e2e03c77d8b95cd6bf`](f5fe3e7)]:
    -   @apollo/query-graphs@2.8.0
    -   @apollo/federation-internals@2.8.0

## @apollo/gateway@2.8.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

### Patch Changes

- Various set context bugfixes
([#3017](#3017))

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da),
[`8a936d741a0c05835ff2533714cf330d18209179`](8a936d7),
[`daf36bd242ba4db0cfcf0e18c1eed235ff0dfaf2`](daf36bd)]:
    -   @apollo/query-planner@2.8.0
    -   @apollo/composition@2.8.0
    -   @apollo/federation-internals@2.8.0

## @apollo/federation-internals@2.8.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

### Patch Changes

- Various set context bugfixes
([#3017](#3017))

## @apollo/query-graphs@2.8.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

### Patch Changes

- Various set context bugfixes
([#3017](#3017))

- Fix bug in context-matching logic for
interfaces-implementing-interfaces (#3014)
([#3015](#3015))

A field is considered to match a context if the field's parent type (in
the original query) either has `@context` on it, or implements/is a
member of a type with `@context` on it. We ended up missing the case
where interfaces implement interfaces; this PR introduces a fix.

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da),
[`8a936d741a0c05835ff2533714cf330d18209179`](8a936d7)]:
    -   @apollo/federation-internals@2.8.0

## @apollo/query-planner@2.8.0

### Minor Changes

- Implement new directives to allow getting and setting context. This
allows resolvers to reference and access data referenced by entities
that exist in the GraphPath that was used to access the field. The
following example demonstrates the ability to access the `prop` field
within the Child resolver.
([#2988](#2988))

    ```graphql
    type Query {
      p: Parent!
    }
    type Parent @key(fields: "id") @context(name: "context") {
      id: ID!
      child: Child!
      prop: String!
    }
    type Child @key(fields: "id") {
      id: ID!
      b: String!
      field(a: String @fromcontext(field: "$context { prop }")): Int!
    }
    ```

### Patch Changes

- Various set context bugfixes
([#3017](#3017))

- Fix relative path logic when eliding subgraph jumps for `@fromContext`
([#3005](#3005))

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da),
[`8a936d741a0c05835ff2533714cf330d18209179`](8a936d7),
[`f5fe3e74d36722f78004c1e2e03c77d8b95cd6bf`](f5fe3e7)]:
    -   @apollo/query-graphs@2.8.0
    -   @apollo/federation-internals@2.8.0

## @apollo/subgraph@2.8.0

### Patch Changes

- Various set context bugfixes
([#3017](#3017))

- Updated dependencies
\[[`c4744da360235d8bb8270ea048f0e0fa5d03be1e`](c4744da),
[`8a936d741a0c05835ff2533714cf330d18209179`](8a936d7)]:
    -   @apollo/federation-internals@2.8.0

## apollo-federation-integration-testsuite@2.8.0

### Patch Changes

- Various set context bugfixes
([#3017](#3017))

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants