Minor Changes
-
Add more information to OpenTelemetry spans. (#2700)
Rename
operationName
tographql.operation.name
and add a
graphql.operation.type
attribute, in conformance with the OpenTelemetry
Semantic Conventions for GraphQL. TheoperationName
attribute is now
deprecated, but it is still emitted alongsidegraphql.operation.name
.Add a
graphql.document
span attribute to thegateway.request
span,
containing the entire GraphQL source sent in the request. This feature
is disable by default.When one or more GraphQL or internal errors occur, report them in the
OpenTelemetry span in which they took place, as an exception event. This
feature is disabled by default.To enable the
graphql.document
span attribute and the exception event
reporting, add the following entries to yourApolloGateway
instance
configuration:const gateway = new ApolloGateway({ // ... telemetry: { // Set to `true` to include the `graphql.document` attribute includeDocument: true, // Set to `true` to report all exception events, or set to a number // to report at most that number of exception events per span reportExceptions: true, // or: reportExceptions: 1 }, });
-
Update
license
field inpackage.json
to useElastic-2.0
SPDX identifier (#2741) -
Introduce the new
@policy
scope for composition (#2818)Note that this directive will only be fully supported by the Apollo Router as a GraphOS Enterprise feature at runtime. Also note that composition of valid
@policy
directive applications will succeed, but the resulting supergraph will not be executable by the Gateway or an Apollo Router which doesn't have the GraphOS Enterprise entitlement.Users may now compose
@policy
applications from their subgraphs into a supergraph.The directive is defined as follows:
scalar federation__Policy directive @policy(policies: [[federation__Policy!]!]!) on | FIELD_DEFINITION | OBJECT | INTERFACE | SCALAR | ENUM
The
Policy
scalar is effectively aString
, similar to theFieldSet
type.In order to compose your
@policy
usages, you must update your subgraph's federation spec version to v2.6 and add the@policy
import to your existing imports like so:@link(url: "https://specs.apollo.dev/federation/v2.6", import: [..., "@policy"])
-
Add graphql.operation.name attribute on gateway.plan span (#2807)