gateway: proxy downstream service errors #3019
Merged
+26
−13
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In the gateway, we currently squash all errors from a single service
into a single
Error
with a generic message, such asError while fetching subquery from service "registry"
. In other words, the gatewayglobally overwrites errors from the underlying services and the original
errors are appended to
Error.extensions.downstreamErrors
.apollo-server/packages/apollo-gateway/src/executeQueryPlan.ts
Line 242 in 9208e14
This changes to behavior, so that the errors are proxied in their same
form rather than nested into a single error. Ultimately the underlying
services are better equipped than the gateway to expose/mask their own
errors with
formatErrors
and this removes the gateway as thebottleneck of configuration. The original desire with the message mask
was to retain service info / context. To accomplish this, we add the
serviceName
to theError.extensions
object for each. so users caninvestigate the results.