apollographql / router

A configurable, high-performance routing runtime for Apollo Federation 🚀
https://www.apollographql.com/docs/router/
Other
817 stars 270 forks source link

Bug: Query Planner Fails for Nested Entity Fields Decorated With `@requires` #6004

Open ryan01010111 opened 2 months ago

ryan01010111 commented 2 months ago

Describe the bug

Note: This issue was first discovered in the query-planner package of the federation repo, and an issue has already been opened there.

When building a query plan for a query that selects fields with @requires conditions on a nested entity type, the router fails, resulting in error Cannot add selection of field \"X\" to selection set of parent type \"Y\". This issue is blocking us from migrating to Router.

To Reproduce

  1. Fork this CodeSandbox
  2. Start all services (if not already running) with:
    npm run dev
  3. Run test query to reproduce the error with:
    npm run test:query

Expected behavior

The query plan to be successfully built and executed.

Output

Router log:

{"timestamp":"2024-09-15T04:36:25.608204335Z","level":"WARN","message":"an error happened in the worker runtime Cannot add selection of field \"Book.id\" to selection set of parent type \"Book\"\n\n","target":"router_bridge::worker","resource":{"service.name":"unknown_service:router","service.version":"1.54.0","process.executable.name":"router"}}

Desktop (please complete the following information):

duckki commented 1 month ago

Note that the new native query planner has the same issue.