Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 28 million developers.Sign up
#1263 - DataLoader Scope changes
The dataloader support in graphql-java has been changed to encourage the right behavior. The
DataLoaderRegistry and its contained
DataLoaders need to be per execution instance based. However the previous setup made them tied to schema which is typically shared across executions.
Instead now the
DataLoaderRegistry is specified as a property of the
ExecutionInput and hence definitely per execution. This ensure thats the behaviour of data loader is scope to one execution and only one execution.
These PRs are all somehow related.
The main change is that we renamed
ExecutionTypeInfo to a more semantically correct
ExecutionStepInfo since it contains much more information than just type information and it is actually focused around the current step of the execution.
We also changed the meaning of
ExecutionStepInfo.type for non nullable types: previously it has been automatically unwrapped so that
type was never NonNull.
If you used
.getType() please change it to
.getUnwrappedNonNullType() to avoid any logic changes.
castType was removed (just do the cast yourself if needed) and
treatAs was renamed to
#1269 - data fetchers can get their parents arguments
Sometimes a child data fetcher wants to lookup upwards and know what arguments are passed to its parents. This is now supported via the
ExecutionStepInfo class. You can get the parent
ExecutionStepInfo from the current field
ExecutionStepInfo and also gets its arguments.
Directives are now considered children of graphql types and will be visited like other children. This allows you to write Traversals that find directives on graphql type objects and apply certain behaviours.
#1264 default methods on interfaces can now supply values to the property data fetcher
#1255 a possible deadlock in the data loader instrumentation tracking was fixed when DataLoader is not per execution
#1243 all the older BatchedExecutionStrategy code is deprecated. Use the DataLoader pattern instead
#1222 The handling of __typename was fixed that caused problems in max query complexity
#1203 the field paths now using the field alias of defined as the path name. This is more correct and specific.
All PRs can be seen here : https://github.com/graphql-java/graphql-java/pulls?q=is%3Apr+milestone%3A11.0