Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

allow for a max result nodes limit for execution#3525

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
andimarek merged 6 commits intomasterfrommax-result-nodes
Mar 18, 2024

Conversation

@andimarek
Copy link
Member

No description provided.

* After each execution the GraphQLContext contains a ResultNodeInfo object under the key {@link ResultNodesInfo#RESULT_NODES_INFO}
* <p>
* The number of result can be limited (and should be for security reasons) by setting the maximum number of result nodes
* in the GraphQLContext under the key {@link ResultNodesInfo#MAX_RESULT_NODES}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

by setting the maximum number of result nodes
in the GraphQLContext under the key {@link ResultNodesInfo#MAX_RESULT_NODES} to an Integer

Say what type in the javadoc

* The number of result nodes created.
* Note: this can be higher than max result nodes because
* a each node that exceeds the number of max nodes is set to null,
* but still is a result node (which value null)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

with value null

@andimarekandimarek added this pull request to the merge queueMar 18, 2024
Merged via the queue intomaster with commitc92d0f2Mar 18, 2024
github-merge-queuebot referenced this pull request in camunda/camundaApr 24, 2024
…n) (#17781)[![MendRenovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)This PR contains the following updates:| Package | Change | Age | Adoption | Passing | Confidence ||---|---|---|---|---|---||[com.graphql-java:graphql-java](https://togithub.com/graphql-java/graphql-java)| `21.5` -> `230521-nf-execution` |[![age](https://developer.mend.io/api/mc/badges/age/maven/com.graphql-java:graphql-java/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.graphql-java:graphql-java/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.graphql-java:graphql-java/21.5/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.graphql-java:graphql-java/21.5/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|---> [!WARNING]> Some dependencies could not be looked up. Check the DependencyDashboard for more information.---### Release Notes<details><summary>graphql-java/graphql-java(com.graphql-java:graphql-java)</summary>###[`v22.0`](https://togithub.com/graphql-java/graphql-java/releases/tag/v22.0):22.0[CompareSource](https://togithub.com/graphql-java/graphql-java/compare/v21.5...v22.0)We are pleased to announce the release of graphql-java v22.0.Thanks to everyone in the community who contributed to the release,whether that was code, helping to report issues, or participating indiscussions.This is a **breaking change** release.The graphql-java team takes breaking changes very seriously but in thename of performance we have made some significant breaking changes inthis release.### Major Performance ChangesPast releases have been very much performance focused and this one is nodifferent. However, this release is aiming to reduce memory pressuremore than reduce pure CPU usage. When the graphql-java engine isrunning, if it produces less objects it will ultimately run fasterbecause of reduced memory pressure and less garbage to collect.The engine has been changed in two major ways that reduce memorypressure.#### ExecutionResult wrappingThe first was that all values that come back got wrapped internally intoa `ExecutionResult` object where the `data` attribute was the value.This was a carry over from some very early GraphQL code but wasunnecessary and hence has been removed. The follow on effect of this isthat some `graphql.execution.ExecutionStrategy` protected methods and`graphql.execution.instrumentation.Instrumentation` methods used toreceive and return `ExecutionResult` values and no longer do, which isan API breaking change. We have made this breaking changes in the nameof memory pressure performance.#### CompletableFuture wrappingThe second major change is that the engine no longer exclusively uses`java.util.concurrent.CompletableFuture`s when composing togetherresults. Let us explain the past code first so we can discuss the newcode.`CompletableFuture` is a fantastic construct because it represents apromise to a value and it can also hold an exceptional state insideitself. Async programming with `CompletableFuture` is viral. If stage 1of some compute process returns a `CompletableFuture` then stage 2 and 3and 4 are likely to as well to ensure everything is asynchronous.We use to take values that were not asynchronous (such as DataFetcherthat returned a simple in memory object) and wrap them in a`CompletableFuture` so that all of the other code composed togetherusing `CompletableFuture` methods like `.thenApply()` and `.thenCompose`and so on. The code is cleaner if you use all `CompletableFuture` codepatterns.However many objects in a GraphQL request are not asynchronous butrather materialised objects in memory. Scalars, enums and list are oftenjust values immediately available to be used and allocating a`CompletableFuture` makes the code easier to write but it has a memorypressure cost.So we have sacrificed cleaner code for more memory performant code.graphql-java engine `graphql.execution.ExecutionStrategy` methods nowjust return `Object` where that object might be either a`CompletableFuture` or a materialised value.```java    private Object /*CompletableFuture<FetchedValue> | FetchedValue>*/       fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters) {```Notice we have lost type safety here. In the past this would have onlybeen `CompletableFuture<FetchedValue>` and hence been both type safe andasync composable.Now the caller of that method has to handle the async case where itmight be a `CompletableFuture<FetchedValue>` AND the materialised valuecase where it might be a `FetchedValue` but as most simple fields inGraphQL are in fact materialised values, this is worth the less cleancode.`DataFetchers` can of course continue to return `CompletableFuture`values and they will be handled in a polymorphic manner.The upshot of all this work is that the graphql-java engine allocatedway less `CompletableFuture` values and hence reduces the amount ofmemory used.#### Instrumentation ChangesThe above changes now mean means that before`graphql.execution.instrumentation.InstrumentationContext` used to begiven a `CompletableFuture` but now no longer does```java    void onDispatched(CompletableFuture<T> result);```is now```java    void onDispatched();```if you previously used the `CompletableFuture` to know when somethingwas completed, well `InstrumentationContext` has the same semanticsbecause it's completed method is similar in that it presents a value oran exception```java    void onCompleted(T result, Throwable t);````graphql.execution.instrumentation.Instrumentation` also had a lot ofdeprecated methods in place and these have been removed since the moreperformant shape of passing in`graphql.execution.instrumentation.InstrumentationState` has been inplace for quite a few releases.Some of the methods that received `ExecutionResult` wrapped values havealso changed as mentioned above.`Instrumentation` is probably the area that needs the most attention interms of breaking changes. If you have not moved off the deprecatedmethods, your custom `Instrumentation`s will no longer compile or run.#### Interning key stringsOur friends at Netflix provided a PR that interns certain key stringslike "field names" so that we create less String instances whenprocessing field names in queries that we know must be previouslyinterned in the schema.[https://github.com/graphql-java/graphql-java/pull/3504](https://togithub.com/graphql-java/graphql-java/pull/3504)#### The full list of performance related changeshttps://github.com/graphql-java/graphql-java/pulls?q=is%3Apr+milestone%3A%2222.0%22+label%3Aperformance### Major Changes#### [@&#8203;defer](https://togithub.com/defer) Experimental SupportSupport for the `@defer` directive has been added in an experimentalfashion. While `@defer` is still not in the released GraphQLspecification, we have judged it mature enough to support at this stageand the `graphql-js` reference implementation has support for it.https://github.com/graphql/graphql-wg/blob/main/rfcs/DeferStream.mdAt this stage we have not yet supported `@stream` but this is likely tobe included in a future release.### Breaking ChangesThere are quite a few API breaking changes in this release. In factthere are 22 PRs containing breaking API changes.#### Stricter parseValue coercion: Aligning with JS referenceimplementationWe have made changes to String, Boolean, Float, and Int `parseValue`coercion, to be consistent with the reference JS implementation. The keychange is `parseValue` is now stricter on accepted inputs.- String `parseValue` now requires input of type `String`. For example,a `Number` input `123` or a `Boolean` input `true` will no longer beaccepted.- Boolean `parseValue` now requires input of type `Boolean`. Forexample, a `String` input `"true"` will no longer be accepted.- Float `parseValue` now requires input of type `Number`. For example, a`String` input `"3.14"` will no longer be accepted.- Int `parseValue` now requires input of type `Number`. For example, a`String` input `"42"` will no longer be accepted.This is a breaking change. To help you migrate, in [version21.0](https://togithub.com/graphql-java/graphql-java/releases/tag/v21.0),we introduced the InputInterceptor[https://github.com/graphql-java/graphql-java/pull/3188](https://togithub.com/graphql-java/graphql-java/pull/3188)(and an implementation LegacyCoercingInputInterceptor[https://github.com/graphql-java/graphql-java/pull/3218](https://togithub.com/graphql-java/graphql-java/pull/3218))to provide a migration pathway. You can use this interceptor to monitorand modify values.For more, see[https://github.com/graphql-java/graphql-java/pull/3553](https://togithub.com/graphql-java/graphql-java/pull/3553)JS reference implementation:https://github.com/graphql/graphql-js/blob/main/src/type/scalars.ts#### Removing deprecated methodsMany methods that have been deprecated for a long time, sometimes evenup to 6 years, have finally been removed.The `CompletableFuture` unwrapping work mentioned above changed manymethods in the `graphql.execution.ExecutionStrategy` classes but wedon't expect this affect many people since very few people write theirown engines.That `CompletableFuture` unwrapping work also had knock on effects asmentioned above on `graphql.execution.instrumentation.Instrumentation`and hence this is the **most likely** place for there to becompatibility challenges in existing code.#### DataLoaderDispatcherInstrumentation has been removed and is nowbuilt into the engineThe code to dispatch `org.dataloader.DataLoader`s used to be aninstrumentation called `DataLoadersDataLoaderDispatcherInstrumentation`and it was automatically added at runtime. This approach has beenremoved.The equivalent code is now built into the graphql-java engine itself.`DataLoader`s can now always be used without any special setup. Thisalso allows the code to be more performant in how `DataLoader`s aredispatched.#### SL4J logging has been removedPreviously, the graphql-java engine would log at DEBUG level certainerrors or when fields get fetched. This has not proven used for from asupport point to the graphql-java team and also has a compliance cost inthat user generated content (UGC) and personally identifying information(PII) could end up being logged, which may not be allowed under regimeslike European General Data Protection Regulation (GDPR).If you want to log now we suggest you invest in a `Instrumentation` thatlogs key events and you can there for log what you want and in acompliant manner of your choosing.[https://github.com/graphql-java/graphql-java/pull/3403](https://togithub.com/graphql-java/graphql-java/pull/3403)#### The full list of API breaking changeshttps://github.com/graphql-java/graphql-java/pulls?q=is%3Apr+milestone%3A%2222.0%22+label%3A%22breaking+change%22### Other changes- Optional strict mode for RuntimeWiring and TypeRuntimeWiring, to avoidaccidentally having multiple datafetchers on the same element[#&#8203;3565](https://togithub.com/graphql-java/graphql-java/issues/3565)#### What's Changed- OneOf validation not being applied to nested inputs by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3365](https://togithub.com/graphql-java/graphql-java/pull/3365)- Bump me.champeau.jmh from 0.7.1 to 0.7.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3371](https://togithub.com/graphql-java/graphql-java/pull/3371)- Dutch translations for GraphQL Java by[@&#8203;jord1e](https://togithub.com/jord1e) in[https://github.com/graphql-java/graphql-java/pull/3031](https://togithub.com/graphql-java/graphql-java/pull/3031)- Add 'compute' family of methods to GraphQLContext by[@&#8203;salvoilmiosi](https://togithub.com/salvoilmiosi) in[https://github.com/graphql-java/graphql-java/pull/3364](https://togithub.com/graphql-java/graphql-java/pull/3364)- Handle list of [@&#8203;oneOf](https://togithub.com/oneOf) inputobjects by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3370](https://togithub.com/graphql-java/graphql-java/pull/3370)- Bump com.graphql-java:java-dataloader from 3.2.1 to 3.2.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3375](https://togithub.com/graphql-java/graphql-java/pull/3375)- Bump com.fasterxml.jackson.core:jackson-databind from 2.15.3 to 2.16.0by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3376](https://togithub.com/graphql-java/graphql-java/pull/3376)- Bump org.jetbrains:annotations from 24.0.1 to 24.1.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3377](https://togithub.com/graphql-java/graphql-java/pull/3377)- Add GitHub action to manage stale PRs and issues by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3359](https://togithub.com/graphql-java/graphql-java/pull/3359)- Bump actions/setup-node from 3 to 4 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3358](https://togithub.com/graphql-java/graphql-java/pull/3358)- Bump google-github-actions/auth from 1.1.1 to 1.2.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3381](https://togithub.com/graphql-java/graphql-java/pull/3381)- Update German translations by[@&#8203;jord1e](https://togithub.com/jord1e) in[https://github.com/graphql-java/graphql-java/pull/3368](https://togithub.com/graphql-java/graphql-java/pull/3368)- Bump google-github-actions/auth from 1.2.0 to 2.0.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3389](https://togithub.com/graphql-java/graphql-java/pull/3389)- Bump actions/setup-java from 3 to 4 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3390](https://togithub.com/graphql-java/graphql-java/pull/3390)- Add tag to exempt PRs and issues from the stale bot by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3391](https://togithub.com/graphql-java/graphql-java/pull/3391)- Bump org.codehaus.groovy:groovy from 3.0.19 to 3.0.20 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3402](https://togithub.com/graphql-java/graphql-java/pull/3402)- Bump com.fasterxml.jackson.core:jackson-databind from 2.16.0 to 2.16.1by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3400](https://togithub.com/graphql-java/graphql-java/pull/3400)- Bump actions/stale from 8 to 9 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3393](https://togithub.com/graphql-java/graphql-java/pull/3393)- Bump org.testng:testng from 7.8.0 to 7.9.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3407](https://togithub.com/graphql-java/graphql-java/pull/3407)- Cleaning up ValidationError constructors by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3405](https://togithub.com/graphql-java/graphql-java/pull/3405)- Refactor ENF Factory by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3410](https://togithub.com/graphql-java/graphql-java/pull/3410)- upgrade gradle to 8.5 by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3412](https://togithub.com/graphql-java/graphql-java/pull/3412)- Java 9 [@&#8203;Deprecated](https://togithub.com/Deprecated)annotation by [@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3406](https://togithub.com/graphql-java/graphql-java/pull/3406)- Defer support on ENFs by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3395](https://togithub.com/graphql-java/graphql-java/pull/3395)- Bump google-github-actions/auth from 2.0.0 to 2.0.1 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3416](https://togithub.com/graphql-java/graphql-java/pull/3416)- 3385 - fix for the turkish eye 🧿 by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3388](https://togithub.com/graphql-java/graphql-java/pull/3388)- Update deprecated methods in scalar coercion documentation example by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3413](https://togithub.com/graphql-java/graphql-java/pull/3413)- Propagate GraphQLContext when completing fields - fix missingConditionalNodesDecision issue by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3411](https://togithub.com/graphql-java/graphql-java/pull/3411)- This removes SLF4J from the code base by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3403](https://togithub.com/graphql-java/graphql-java/pull/3403)- Check in Gradle files for Gradle 8.5 by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3419](https://togithub.com/graphql-java/graphql-java/pull/3419)- Bump google-github-actions/auth from 2.0.1 to 2.1.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3420](https://togithub.com/graphql-java/graphql-java/pull/3420)- Bump gradle/wrapper-validation-action from 1 to 2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3437](https://togithub.com/graphql-java/graphql-java/pull/3437)- Skip signing for local and upgrade to Gradle 8.6 by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3441](https://togithub.com/graphql-java/graphql-java/pull/3441)- ExecutionResult wrapping can be avoided - reduces memory allocationsand GC by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3330](https://togithub.com/graphql-java/graphql-java/pull/3330)- Bump org.eclipse.jetty:jetty-server from 11.0.15 to 11.0.20 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3445](https://togithub.com/graphql-java/graphql-java/pull/3445)- Bump google-github-actions/auth from 2.1.0 to 2.1.1 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3446](https://togithub.com/graphql-java/graphql-java/pull/3446)- Defer execution 2024 by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3421](https://togithub.com/graphql-java/graphql-java/pull/3421)- Add class hierarchy for incremental execution result by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3414](https://togithub.com/graphql-java/graphql-java/pull/3414)- ensure that instrumentations get an executionid by[@&#8203;jbellenger](https://togithub.com/jbellenger) in[https://github.com/graphql-java/graphql-java/pull/3448](https://togithub.com/graphql-java/graphql-java/pull/3448)- handle more Schema diff applied directives cases by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3451](https://togithub.com/graphql-java/graphql-java/pull/3451)- Defer execution refactoring after first merge by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3450](https://togithub.com/graphql-java/graphql-java/pull/3450)- Fix bug where deferred payloads were not using field aliases by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3449](https://togithub.com/graphql-java/graphql-java/pull/3449)- Fix invalid AST printer: add escape characters to single linedescriptions by [@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3443](https://togithub.com/graphql-java/graphql-java/pull/3443)- Fix flaky defer test by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3455](https://togithub.com/graphql-java/graphql-java/pull/3455)- Native DataLoader dispatch strategy without Instrumentation by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3447](https://togithub.com/graphql-java/graphql-java/pull/3447)- Avoid repeated Map lookups in SimpleFieldValidation by[@&#8203;kilink](https://togithub.com/kilink) in[https://github.com/graphql-java/graphql-java/pull/3461](https://togithub.com/graphql-java/graphql-java/pull/3461)- Fix oneOf bug when variables is empty by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3430](https://togithub.com/graphql-java/graphql-java/pull/3430)- Avoid Map for instrumentation state by[@&#8203;DanielThomas](https://togithub.com/DanielThomas) in[https://github.com/graphql-java/graphql-java/pull/3459](https://togithub.com/graphql-java/graphql-java/pull/3459)- Small code tweaks on recent PR by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3463](https://togithub.com/graphql-java/graphql-java/pull/3463)- Use String concatenation instead of StringBuilder by[@&#8203;kilink](https://togithub.com/kilink) in[https://github.com/graphql-java/graphql-java/pull/3464](https://togithub.com/graphql-java/graphql-java/pull/3464)- Added Async benchmark for future changes by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3467](https://togithub.com/graphql-java/graphql-java/pull/3467)- cleaning up the jhm benchmarks by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3468](https://togithub.com/graphql-java/graphql-java/pull/3468)- fixed async benchmark - it was nonsensical before by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3469](https://togithub.com/graphql-java/graphql-java/pull/3469)- andis suggestions on batch size by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3472](https://togithub.com/graphql-java/graphql-java/pull/3472)- Fix schema builder to copy extensionDefinitions by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3470](https://togithub.com/graphql-java/graphql-java/pull/3470)- Added an id generator that's more performant by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3466](https://togithub.com/graphql-java/graphql-java/pull/3466)- Bump google-github-actions/auth from 2.1.1 to 2.1.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3473](https://togithub.com/graphql-java/graphql-java/pull/3473)- Tweaked id generator name by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3474](https://togithub.com/graphql-java/graphql-java/pull/3474)- Using object instead of CF in DispatcherStrategy interface by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3479](https://togithub.com/graphql-java/graphql-java/pull/3479)- Added a more complex query benchmark by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3476](https://togithub.com/graphql-java/graphql-java/pull/3476)- Now allows the benchmark to go into profiling mode by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3485](https://togithub.com/graphql-java/graphql-java/pull/3485)- Now allows the benchmark to go into profiling mode - 2 by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3486](https://togithub.com/graphql-java/graphql-java/pull/3486)- Avoid repeated calls to getFieldDef and unnecessary immutablebuilders/collections by[@&#8203;DanielThomas](https://togithub.com/DanielThomas) in[https://github.com/graphql-java/graphql-java/pull/3478](https://togithub.com/graphql-java/graphql-java/pull/3478)- This removes the CompletableFuture signature fromInstrumentationContext by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3457](https://togithub.com/graphql-java/graphql-java/pull/3457)- Don't build a builder object and then turn it into the actual objectby [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3465](https://togithub.com/graphql-java/graphql-java/pull/3465)- directive filtering during printing by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3387](https://togithub.com/graphql-java/graphql-java/pull/3387)- Updated helper code for profiler attachment by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3491](https://togithub.com/graphql-java/graphql-java/pull/3491)- Combined benchmark runner by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3493](https://togithub.com/graphql-java/graphql-java/pull/3493)- Defer validation by[@&#8203;Juliano-Prado](https://togithub.com/Juliano-Prado) in[https://github.com/graphql-java/graphql-java/pull/3439](https://togithub.com/graphql-java/graphql-java/pull/3439)- Does not allocate a default deferred context that is thrown away ontransform by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3484](https://togithub.com/graphql-java/graphql-java/pull/3484)- Bump org.codehaus.groovy:groovy from 3.0.20 to 3.0.21 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3497](https://togithub.com/graphql-java/graphql-java/pull/3497)- Get fieldDef improvements from Netflix by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3499](https://togithub.com/graphql-java/graphql-java/pull/3499)- recreating the netflix Intern field names PR by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3503](https://togithub.com/graphql-java/graphql-java/pull/3503)- adding a tracking agent by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3433](https://togithub.com/graphql-java/graphql-java/pull/3433)- Map benchmarks by [@&#8203;bbakerman](https://togithub.com/bbakerman)in[https://github.com/graphql-java/graphql-java/pull/3488](https://togithub.com/graphql-java/graphql-java/pull/3488)- A CompleteableFuture benchmark by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3492](https://togithub.com/graphql-java/graphql-java/pull/3492)- Fix printing of union types by[@&#8203;bhabegger](https://togithub.com/bhabegger) in[https://github.com/graphql-java/graphql-java/pull/3506](https://togithub.com/graphql-java/graphql-java/pull/3506)- SubscriptionUniqueRootField validation to check multiple fragments -Validation Bug fix by[@&#8203;Juliano-Prado](https://togithub.com/Juliano-Prado) in[https://github.com/graphql-java/graphql-java/pull/3481](https://togithub.com/graphql-java/graphql-java/pull/3481)- Return empty singleton DirectivesHolder if directives are empty by[@&#8203;gnawf](https://togithub.com/gnawf) in[https://github.com/graphql-java/graphql-java/pull/3518](https://togithub.com/graphql-java/graphql-java/pull/3518)- Bump org.junit.jupiter:junit-jupiter from 5.7.1 to 5.10.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3523](https://togithub.com/graphql-java/graphql-java/pull/3523)- Bump org.assertj:assertj-core from 3.25.1 to 3.25.3 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3521](https://togithub.com/graphql-java/graphql-java/pull/3521)- Bump net.bytebuddy:byte-buddy from 1.14.11 to 1.14.12 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3522](https://togithub.com/graphql-java/graphql-java/pull/3522)- Bump com.fasterxml.jackson.core:jackson-databind from 2.16.1 to 2.16.2by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3519](https://togithub.com/graphql-java/graphql-java/pull/3519)- Bump net.bytebuddy:byte-buddy-agent from 1.14.11 to 1.14.12 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3520](https://togithub.com/graphql-java/graphql-java/pull/3520)- allow for a max result nodes limit for execution by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3525](https://togithub.com/graphql-java/graphql-java/pull/3525)- This provides and ability to disable Introspection by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3526](https://togithub.com/graphql-java/graphql-java/pull/3526)- This provides GoodFaithIntrospection by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3527](https://togithub.com/graphql-java/graphql-java/pull/3527)- Bump com.fasterxml.jackson.core:jackson-databind from 2.16.2 to 2.17.0by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3534](https://togithub.com/graphql-java/graphql-java/pull/3534)- adding a cycle schema analyzer by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3533](https://togithub.com/graphql-java/graphql-java/pull/3533)- Restrict the number of ENFs created and take advantage in GoodFaithintrospection by [@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3539](https://togithub.com/graphql-java/graphql-java/pull/3539)- Interning fieldnames (from netflix) by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3504](https://togithub.com/graphql-java/graphql-java/pull/3504)- Cheaper assertions with constant strings by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3507](https://togithub.com/graphql-java/graphql-java/pull/3507)- Small tweaks to not allocate objects for lambda closures by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3508](https://togithub.com/graphql-java/graphql-java/pull/3508)- Removed the deprecated Instrumentation methods and removes ER wrappingby [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3460](https://togithub.com/graphql-java/graphql-java/pull/3460)- Removed deprecated methods in parsing by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3509](https://togithub.com/graphql-java/graphql-java/pull/3509)- Removed deprecated methods in doc providers by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3510](https://togithub.com/graphql-java/graphql-java/pull/3510)- Removed deprecated methods in ExecutionInput by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3511](https://togithub.com/graphql-java/graphql-java/pull/3511)- Removed deprecated methods in ExecutionContext by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3512](https://togithub.com/graphql-java/graphql-java/pull/3512)- Removed deprecated methods in GraphQLSchema by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3515](https://togithub.com/graphql-java/graphql-java/pull/3515)- Removed deprecated methods and SchemaGeneratorPostProcessing by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3516](https://togithub.com/graphql-java/graphql-java/pull/3516)- Removed deprecated methods in ValidationError by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3517](https://togithub.com/graphql-java/graphql-java/pull/3517)- cleanup ExecutableNormalizedOperationFactory by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3544](https://togithub.com/graphql-java/graphql-java/pull/3544)- Made the field definition lookup more optimised by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3494](https://togithub.com/graphql-java/graphql-java/pull/3494)- Removed deprecated methods in code registry by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3514](https://togithub.com/graphql-java/graphql-java/pull/3514)- Improve Good faith introspection error handling by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3546](https://togithub.com/graphql-java/graphql-java/pull/3546)- Reduce the usage of CompletableFutures in graphql-java - scalars /enums and lists by [@&#8203;bbakerman](https://togithub.com/bbakerman)in[https://github.com/graphql-java/graphql-java/pull/3480](https://togithub.com/graphql-java/graphql-java/pull/3480)- add a default max nodes count for the ExecutableNormalizedFactory by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3547](https://togithub.com/graphql-java/graphql-java/pull/3547)- Reduce the usage of CompletableFutures in graphql-java - now withobjects by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3490](https://togithub.com/graphql-java/graphql-java/pull/3490)- Bump net.bytebuddy:byte-buddy from 1.14.12 to 1.14.13 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3554](https://togithub.com/graphql-java/graphql-java/pull/3554)- Bump net.bytebuddy:byte-buddy-agent from 1.14.12 to 1.14.13 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3555](https://togithub.com/graphql-java/graphql-java/pull/3555)- Stricter parseValue coercion for String, Int, Float, Boolean by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3553](https://togithub.com/graphql-java/graphql-java/pull/3553)- require non-empty directive locations by[@&#8203;jbellenger](https://togithub.com/jbellenger) in[https://github.com/graphql-java/graphql-java/pull/3552](https://togithub.com/graphql-java/graphql-java/pull/3552)- Putting createState back into Instrumentation by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3557](https://togithub.com/graphql-java/graphql-java/pull/3557)- Bump org.testng:testng from 7.9.0 to 7.10.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3559](https://togithub.com/graphql-java/graphql-java/pull/3559)- Bump io.github.gradle-nexus.publish-plugin from 1.3.0 to 2.0.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3560](https://togithub.com/graphql-java/graphql-java/pull/3560)- fix incremental partial result builder by[@&#8203;sbarker2](https://togithub.com/sbarker2) in[https://github.com/graphql-java/graphql-java/pull/3562](https://togithub.com/graphql-java/graphql-java/pull/3562)- Dataloader 3.3.0 upgrade by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3564](https://togithub.com/graphql-java/graphql-java/pull/3564)- strictMode for RuntimeWiring and TypeRuntimeWiring by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3565](https://togithub.com/graphql-java/graphql-java/pull/3565)- Bump org.testng:testng from 7.10.0 to 7.10.1 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3566](https://togithub.com/graphql-java/graphql-java/pull/3566)- Bump gradle/wrapper-validation-action from 2 to 3 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3567](https://togithub.com/graphql-java/graphql-java/pull/3567)- validate non-nullable directive args by[@&#8203;jbellenger](https://togithub.com/jbellenger) in[https://github.com/graphql-java/graphql-java/pull/3551](https://togithub.com/graphql-java/graphql-java/pull/3551)#### New Contributors- [@&#8203;salvoilmiosi](https://togithub.com/salvoilmiosi) made theirfirst contribution in[https://github.com/graphql-java/graphql-java/pull/3364](https://togithub.com/graphql-java/graphql-java/pull/3364)- [@&#8203;Juliano-Prado](https://togithub.com/Juliano-Prado) made theirfirst contribution in[https://github.com/graphql-java/graphql-java/pull/3439](https://togithub.com/graphql-java/graphql-java/pull/3439)- [@&#8203;bhabegger](https://togithub.com/bhabegger) made their firstcontribution in[https://github.com/graphql-java/graphql-java/pull/3506](https://togithub.com/graphql-java/graphql-java/pull/3506)- [@&#8203;sbarker2](https://togithub.com/sbarker2) made their firstcontribution in[https://github.com/graphql-java/graphql-java/pull/3562](https://togithub.com/graphql-java/graphql-java/pull/3562)**Full Changelog**:graphql-java/graphql-java@v21.5...v22.0</details>---### Configuration📅 **Schedule**: Branch creation - At any time (no schedule defined),Automerge - At any time (no schedule defined).🚦 **Automerge**: Enabled.♻ **Rebasing**: Whenever PR becomes conflicted, or you tick therebase/retry checkbox.🔕 **Ignore**: Close this PR and you won't be reminded about this updateagain.---- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, checkthis box---This PR has been generated by [MendRenovate](https://www.mend.io/free-developer-tools/renovate/). Viewrepository job log[here](https://developer.mend.io/github/camunda/zeebe).<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMTMuMSIsInVwZGF0ZWRJblZlciI6IjM3LjMxMy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJhdXRvbWVyZ2UiXX0=-->
github-merge-queuebot referenced this pull request in camunda/camundaApr 25, 2024
…n) (#17781)[![MendRenovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)This PR contains the following updates:| Package | Change | Age | Adoption | Passing | Confidence ||---|---|---|---|---|---||[com.graphql-java:graphql-java](https://togithub.com/graphql-java/graphql-java)| `21.5` -> `230521-nf-execution` |[![age](https://developer.mend.io/api/mc/badges/age/maven/com.graphql-java:graphql-java/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.graphql-java:graphql-java/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.graphql-java:graphql-java/21.5/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.graphql-java:graphql-java/21.5/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|---> [!WARNING]> Some dependencies could not be looked up. Check the DependencyDashboard for more information.---### Release Notes<details><summary>graphql-java/graphql-java(com.graphql-java:graphql-java)</summary>###[`v22.0`](https://togithub.com/graphql-java/graphql-java/releases/tag/v22.0):22.0We are pleased to announce the release of graphql-java v22.0.Thanks to everyone in the community who contributed to the release,whether that was code, helping to report issues, or participating indiscussions.This is a **breaking change** release.The graphql-java team takes breaking changes very seriously but in thename of performance we have made some significant breaking changes inthis release.### Major Performance ChangesPast releases have been very much performance focused and this one is nodifferent. However, this release is aiming to reduce memory pressuremore than reduce pure CPU usage. When the graphql-java engine isrunning, if it produces less objects it will ultimately run fasterbecause of reduced memory pressure and less garbage to collect.The engine has been changed in two major ways that reduce memorypressure.#### ExecutionResult wrappingThe first was that all values that come back got wrapped internally intoa `ExecutionResult` object where the `data` attribute was the value.This was a carry over from some very early GraphQL code but wasunnecessary and hence has been removed. The follow on effect of this isthat some `graphql.execution.ExecutionStrategy` protected methods and`graphql.execution.instrumentation.Instrumentation` methods used toreceive and return `ExecutionResult` values and no longer do, which isan API breaking change. We have made this breaking changes in the nameof memory pressure performance.#### CompletableFuture wrappingThe second major change is that the engine no longer exclusively uses`java.util.concurrent.CompletableFuture`s when composing togetherresults. Let us explain the past code first so we can discuss the newcode.`CompletableFuture` is a fantastic construct because it represents apromise to a value and it can also hold an exceptional state insideitself. Async programming with `CompletableFuture` is viral. If stage 1of some compute process returns a `CompletableFuture` then stage 2 and 3and 4 are likely to as well to ensure everything is asynchronous.We use to take values that were not asynchronous (such as DataFetcherthat returned a simple in memory object) and wrap them in a`CompletableFuture` so that all of the other code composed togetherusing `CompletableFuture` methods like `.thenApply()` and `.thenCompose`and so on. The code is cleaner if you use all `CompletableFuture` codepatterns.However many objects in a GraphQL request are not asynchronous butrather materialised objects in memory. Scalars, enums and list are oftenjust values immediately available to be used and allocating a`CompletableFuture` makes the code easier to write but it has a memorypressure cost.So we have sacrificed cleaner code for more memory performant code.graphql-java engine `graphql.execution.ExecutionStrategy` methods nowjust return `Object` where that object might be either a`CompletableFuture` or a materialised value.```java    private Object /*CompletableFuture<FetchedValue> | FetchedValue>*/       fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters) {```Notice we have lost type safety here. In the past this would have onlybeen `CompletableFuture<FetchedValue>` and hence been both type safe andasync composable.Now the caller of that method has to handle the async case where itmight be a `CompletableFuture<FetchedValue>` AND the materialised valuecase where it might be a `FetchedValue` but as most simple fields inGraphQL are in fact materialised values, this is worth the less cleancode.`DataFetchers` can of course continue to return `CompletableFuture`values and they will be handled in a polymorphic manner.The upshot of all this work is that the graphql-java engine allocatedway less `CompletableFuture` values and hence reduces the amount ofmemory used.#### Instrumentation ChangesThe above changes now mean means that before`graphql.execution.instrumentation.InstrumentationContext` used to begiven a `CompletableFuture` but now no longer does```java    void onDispatched(CompletableFuture<T> result);```is now```java    void onDispatched();```if you previously used the `CompletableFuture` to know when somethingwas completed, well `InstrumentationContext` has the same semanticsbecause it's completed method is similar in that it presents a value oran exception```java    void onCompleted(T result, Throwable t);````graphql.execution.instrumentation.Instrumentation` also had a lot ofdeprecated methods in place and these have been removed since the moreperformant shape of passing in`graphql.execution.instrumentation.InstrumentationState` has been inplace for quite a few releases.Some of the methods that received `ExecutionResult` wrapped values havealso changed as mentioned above.`Instrumentation` is probably the area that needs the most attention interms of breaking changes. If you have not moved off the deprecatedmethods, your custom `Instrumentation`s will no longer compile or run.#### Interning key stringsOur friends at Netflix provided a PR that interns certain key stringslike "field names" so that we create less String instances whenprocessing field names in queries that we know must be previouslyinterned in the schema.[https://github.com/graphql-java/graphql-java/pull/3504](https://togithub.com/graphql-java/graphql-java/pull/3504)#### The full list of performance related changeshttps://github.com/graphql-java/graphql-java/pulls?q=is%3Apr+milestone%3A%2222.0%22+label%3Aperformance### Major Changes#### [@&#8203;defer](https://togithub.com/defer) Experimental SupportSupport for the `@defer` directive has been added in an experimentalfashion. While `@defer` is still not in the released GraphQLspecification, we have judged it mature enough to support at this stageand the `graphql-js` reference implementation has support for it.https://github.com/graphql/graphql-wg/blob/main/rfcs/DeferStream.mdAt this stage we have not yet supported `@stream` but this is likely tobe included in a future release.### Breaking ChangesThere are quite a few API breaking changes in this release. In factthere are 22 PRs containing breaking API changes.#### Stricter parseValue coercion: Aligning with JS referenceimplementationWe have made changes to String, Boolean, Float, and Int `parseValue`coercion, to be consistent with the reference JS implementation. The keychange is `parseValue` is now stricter on accepted inputs.- String `parseValue` now requires input of type `String`. For example,a `Number` input `123` or a `Boolean` input `true` will no longer beaccepted.- Boolean `parseValue` now requires input of type `Boolean`. Forexample, a `String` input `"true"` will no longer be accepted.- Float `parseValue` now requires input of type `Number`. For example, a`String` input `"3.14"` will no longer be accepted.- Int `parseValue` now requires input of type `Number`. For example, a`String` input `"42"` will no longer be accepted.This is a breaking change. To help you migrate, in [version21.0](https://togithub.com/graphql-java/graphql-java/releases/tag/v21.0),we introduced the InputInterceptor[https://github.com/graphql-java/graphql-java/pull/3188](https://togithub.com/graphql-java/graphql-java/pull/3188)(and an implementation LegacyCoercingInputInterceptor[https://github.com/graphql-java/graphql-java/pull/3218](https://togithub.com/graphql-java/graphql-java/pull/3218))to provide a migration pathway. You can use this interceptor to monitorand modify values.For more, see[https://github.com/graphql-java/graphql-java/pull/3553](https://togithub.com/graphql-java/graphql-java/pull/3553)JS reference implementation:https://github.com/graphql/graphql-js/blob/main/src/type/scalars.ts#### Removing deprecated methodsMany methods that have been deprecated for a long time, sometimes evenup to 6 years, have finally been removed.The `CompletableFuture` unwrapping work mentioned above changed manymethods in the `graphql.execution.ExecutionStrategy` classes but wedon't expect this affect many people since very few people write theirown engines.That `CompletableFuture` unwrapping work also had knock on effects asmentioned above on `graphql.execution.instrumentation.Instrumentation`and hence this is the **most likely** place for there to becompatibility challenges in existing code.#### DataLoaderDispatcherInstrumentation has been removed and is nowbuilt into the engineThe code to dispatch `org.dataloader.DataLoader`s used to be aninstrumentation called `DataLoadersDataLoaderDispatcherInstrumentation`and it was automatically added at runtime. This approach has beenremoved.The equivalent code is now built into the graphql-java engine itself.`DataLoader`s can now always be used without any special setup. Thisalso allows the code to be more performant in how `DataLoader`s aredispatched.#### SL4J logging has been removedPreviously, the graphql-java engine would log at DEBUG level certainerrors or when fields get fetched. This has not proven used for from asupport point to the graphql-java team and also has a compliance cost inthat user generated content (UGC) and personally identifying information(PII) could end up being logged, which may not be allowed under regimeslike European General Data Protection Regulation (GDPR).If you want to log now we suggest you invest in a `Instrumentation` thatlogs key events and you can there for log what you want and in acompliant manner of your choosing.[https://github.com/graphql-java/graphql-java/pull/3403](https://togithub.com/graphql-java/graphql-java/pull/3403)#### The full list of API breaking changeshttps://github.com/graphql-java/graphql-java/pulls?q=is%3Apr+milestone%3A%2222.0%22+label%3A%22breaking+change%22### Other changes- Optional strict mode for RuntimeWiring and TypeRuntimeWiring, to avoidaccidentally having multiple datafetchers on the same element[#&#8203;3565](https://togithub.com/graphql-java/graphql-java/issues/3565)#### What's Changed- OneOf validation not being applied to nested inputs by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3365](https://togithub.com/graphql-java/graphql-java/pull/3365)- Bump me.champeau.jmh from 0.7.1 to 0.7.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3371](https://togithub.com/graphql-java/graphql-java/pull/3371)- Dutch translations for GraphQL Java by[@&#8203;jord1e](https://togithub.com/jord1e) in[https://github.com/graphql-java/graphql-java/pull/3031](https://togithub.com/graphql-java/graphql-java/pull/3031)- Add 'compute' family of methods to GraphQLContext by[@&#8203;salvoilmiosi](https://togithub.com/salvoilmiosi) in[https://github.com/graphql-java/graphql-java/pull/3364](https://togithub.com/graphql-java/graphql-java/pull/3364)- Handle list of [@&#8203;oneOf](https://togithub.com/oneOf) inputobjects by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3370](https://togithub.com/graphql-java/graphql-java/pull/3370)- Bump com.graphql-java:java-dataloader from 3.2.1 to 3.2.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3375](https://togithub.com/graphql-java/graphql-java/pull/3375)- Bump com.fasterxml.jackson.core:jackson-databind from 2.15.3 to 2.16.0by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3376](https://togithub.com/graphql-java/graphql-java/pull/3376)- Bump org.jetbrains:annotations from 24.0.1 to 24.1.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3377](https://togithub.com/graphql-java/graphql-java/pull/3377)- Add GitHub action to manage stale PRs and issues by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3359](https://togithub.com/graphql-java/graphql-java/pull/3359)- Bump actions/setup-node from 3 to 4 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3358](https://togithub.com/graphql-java/graphql-java/pull/3358)- Bump google-github-actions/auth from 1.1.1 to 1.2.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3381](https://togithub.com/graphql-java/graphql-java/pull/3381)- Update German translations by[@&#8203;jord1e](https://togithub.com/jord1e) in[https://github.com/graphql-java/graphql-java/pull/3368](https://togithub.com/graphql-java/graphql-java/pull/3368)- Bump google-github-actions/auth from 1.2.0 to 2.0.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3389](https://togithub.com/graphql-java/graphql-java/pull/3389)- Bump actions/setup-java from 3 to 4 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3390](https://togithub.com/graphql-java/graphql-java/pull/3390)- Add tag to exempt PRs and issues from the stale bot by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3391](https://togithub.com/graphql-java/graphql-java/pull/3391)- Bump org.codehaus.groovy:groovy from 3.0.19 to 3.0.20 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3402](https://togithub.com/graphql-java/graphql-java/pull/3402)- Bump com.fasterxml.jackson.core:jackson-databind from 2.16.0 to 2.16.1by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3400](https://togithub.com/graphql-java/graphql-java/pull/3400)- Bump actions/stale from 8 to 9 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3393](https://togithub.com/graphql-java/graphql-java/pull/3393)- Bump org.testng:testng from 7.8.0 to 7.9.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3407](https://togithub.com/graphql-java/graphql-java/pull/3407)- Cleaning up ValidationError constructors by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3405](https://togithub.com/graphql-java/graphql-java/pull/3405)- Refactor ENF Factory by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3410](https://togithub.com/graphql-java/graphql-java/pull/3410)- upgrade gradle to 8.5 by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3412](https://togithub.com/graphql-java/graphql-java/pull/3412)- Java 9 [@&#8203;Deprecated](https://togithub.com/Deprecated)annotation by [@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3406](https://togithub.com/graphql-java/graphql-java/pull/3406)- Defer support on ENFs by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3395](https://togithub.com/graphql-java/graphql-java/pull/3395)- Bump google-github-actions/auth from 2.0.0 to 2.0.1 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3416](https://togithub.com/graphql-java/graphql-java/pull/3416)- 3385 - fix for the turkish eye 🧿 by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3388](https://togithub.com/graphql-java/graphql-java/pull/3388)- Update deprecated methods in scalar coercion documentation example by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3413](https://togithub.com/graphql-java/graphql-java/pull/3413)- Propagate GraphQLContext when completing fields - fix missingConditionalNodesDecision issue by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3411](https://togithub.com/graphql-java/graphql-java/pull/3411)- This removes SLF4J from the code base by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3403](https://togithub.com/graphql-java/graphql-java/pull/3403)- Check in Gradle files for Gradle 8.5 by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3419](https://togithub.com/graphql-java/graphql-java/pull/3419)- Bump google-github-actions/auth from 2.0.1 to 2.1.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3420](https://togithub.com/graphql-java/graphql-java/pull/3420)- Bump gradle/wrapper-validation-action from 1 to 2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3437](https://togithub.com/graphql-java/graphql-java/pull/3437)- Skip signing for local and upgrade to Gradle 8.6 by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3441](https://togithub.com/graphql-java/graphql-java/pull/3441)- ExecutionResult wrapping can be avoided - reduces memory allocationsand GC by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3330](https://togithub.com/graphql-java/graphql-java/pull/3330)- Bump org.eclipse.jetty:jetty-server from 11.0.15 to 11.0.20 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3445](https://togithub.com/graphql-java/graphql-java/pull/3445)- Bump google-github-actions/auth from 2.1.0 to 2.1.1 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3446](https://togithub.com/graphql-java/graphql-java/pull/3446)- Defer execution 2024 by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3421](https://togithub.com/graphql-java/graphql-java/pull/3421)- Add class hierarchy for incremental execution result by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3414](https://togithub.com/graphql-java/graphql-java/pull/3414)- ensure that instrumentations get an executionid by[@&#8203;jbellenger](https://togithub.com/jbellenger) in[https://github.com/graphql-java/graphql-java/pull/3448](https://togithub.com/graphql-java/graphql-java/pull/3448)- handle more Schema diff applied directives cases by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3451](https://togithub.com/graphql-java/graphql-java/pull/3451)- Defer execution refactoring after first merge by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3450](https://togithub.com/graphql-java/graphql-java/pull/3450)- Fix bug where deferred payloads were not using field aliases by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3449](https://togithub.com/graphql-java/graphql-java/pull/3449)- Fix invalid AST printer: add escape characters to single linedescriptions by [@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3443](https://togithub.com/graphql-java/graphql-java/pull/3443)- Fix flaky defer test by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3455](https://togithub.com/graphql-java/graphql-java/pull/3455)- Native DataLoader dispatch strategy without Instrumentation by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3447](https://togithub.com/graphql-java/graphql-java/pull/3447)- Avoid repeated Map lookups in SimpleFieldValidation by[@&#8203;kilink](https://togithub.com/kilink) in[https://github.com/graphql-java/graphql-java/pull/3461](https://togithub.com/graphql-java/graphql-java/pull/3461)- Fix oneOf bug when variables is empty by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3430](https://togithub.com/graphql-java/graphql-java/pull/3430)- Avoid Map for instrumentation state by[@&#8203;DanielThomas](https://togithub.com/DanielThomas) in[https://github.com/graphql-java/graphql-java/pull/3459](https://togithub.com/graphql-java/graphql-java/pull/3459)- Small code tweaks on recent PR by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3463](https://togithub.com/graphql-java/graphql-java/pull/3463)- Use String concatenation instead of StringBuilder by[@&#8203;kilink](https://togithub.com/kilink) in[https://github.com/graphql-java/graphql-java/pull/3464](https://togithub.com/graphql-java/graphql-java/pull/3464)- Added Async benchmark for future changes by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3467](https://togithub.com/graphql-java/graphql-java/pull/3467)- cleaning up the jhm benchmarks by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3468](https://togithub.com/graphql-java/graphql-java/pull/3468)- fixed async benchmark - it was nonsensical before by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3469](https://togithub.com/graphql-java/graphql-java/pull/3469)- andis suggestions on batch size by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3472](https://togithub.com/graphql-java/graphql-java/pull/3472)- Fix schema builder to copy extensionDefinitions by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3470](https://togithub.com/graphql-java/graphql-java/pull/3470)- Added an id generator that's more performant by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3466](https://togithub.com/graphql-java/graphql-java/pull/3466)- Bump google-github-actions/auth from 2.1.1 to 2.1.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3473](https://togithub.com/graphql-java/graphql-java/pull/3473)- Tweaked id generator name by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3474](https://togithub.com/graphql-java/graphql-java/pull/3474)- Using object instead of CF in DispatcherStrategy interface by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3479](https://togithub.com/graphql-java/graphql-java/pull/3479)- Added a more complex query benchmark by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3476](https://togithub.com/graphql-java/graphql-java/pull/3476)- Now allows the benchmark to go into profiling mode by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3485](https://togithub.com/graphql-java/graphql-java/pull/3485)- Now allows the benchmark to go into profiling mode - 2 by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3486](https://togithub.com/graphql-java/graphql-java/pull/3486)- Avoid repeated calls to getFieldDef and unnecessary immutablebuilders/collections by[@&#8203;DanielThomas](https://togithub.com/DanielThomas) in[https://github.com/graphql-java/graphql-java/pull/3478](https://togithub.com/graphql-java/graphql-java/pull/3478)- This removes the CompletableFuture signature fromInstrumentationContext by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3457](https://togithub.com/graphql-java/graphql-java/pull/3457)- Don't build a builder object and then turn it into the actual objectby [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3465](https://togithub.com/graphql-java/graphql-java/pull/3465)- directive filtering during printing by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3387](https://togithub.com/graphql-java/graphql-java/pull/3387)- Updated helper code for profiler attachment by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3491](https://togithub.com/graphql-java/graphql-java/pull/3491)- Combined benchmark runner by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3493](https://togithub.com/graphql-java/graphql-java/pull/3493)- Defer validation by[@&#8203;Juliano-Prado](https://togithub.com/Juliano-Prado) in[https://github.com/graphql-java/graphql-java/pull/3439](https://togithub.com/graphql-java/graphql-java/pull/3439)- Does not allocate a default deferred context that is thrown away ontransform by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3484](https://togithub.com/graphql-java/graphql-java/pull/3484)- Bump org.codehaus.groovy:groovy from 3.0.20 to 3.0.21 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3497](https://togithub.com/graphql-java/graphql-java/pull/3497)- Get fieldDef improvements from Netflix by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3499](https://togithub.com/graphql-java/graphql-java/pull/3499)- recreating the netflix Intern field names PR by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3503](https://togithub.com/graphql-java/graphql-java/pull/3503)- adding a tracking agent by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3433](https://togithub.com/graphql-java/graphql-java/pull/3433)- Map benchmarks by [@&#8203;bbakerman](https://togithub.com/bbakerman)in[https://github.com/graphql-java/graphql-java/pull/3488](https://togithub.com/graphql-java/graphql-java/pull/3488)- A CompleteableFuture benchmark by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3492](https://togithub.com/graphql-java/graphql-java/pull/3492)- Fix printing of union types by[@&#8203;bhabegger](https://togithub.com/bhabegger) in[https://github.com/graphql-java/graphql-java/pull/3506](https://togithub.com/graphql-java/graphql-java/pull/3506)- SubscriptionUniqueRootField validation to check multiple fragments -Validation Bug fix by[@&#8203;Juliano-Prado](https://togithub.com/Juliano-Prado) in[https://github.com/graphql-java/graphql-java/pull/3481](https://togithub.com/graphql-java/graphql-java/pull/3481)- Return empty singleton DirectivesHolder if directives are empty by[@&#8203;gnawf](https://togithub.com/gnawf) in[https://github.com/graphql-java/graphql-java/pull/3518](https://togithub.com/graphql-java/graphql-java/pull/3518)- Bump org.junit.jupiter:junit-jupiter from 5.7.1 to 5.10.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3523](https://togithub.com/graphql-java/graphql-java/pull/3523)- Bump org.assertj:assertj-core from 3.25.1 to 3.25.3 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3521](https://togithub.com/graphql-java/graphql-java/pull/3521)- Bump net.bytebuddy:byte-buddy from 1.14.11 to 1.14.12 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3522](https://togithub.com/graphql-java/graphql-java/pull/3522)- Bump com.fasterxml.jackson.core:jackson-databind from 2.16.1 to 2.16.2by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3519](https://togithub.com/graphql-java/graphql-java/pull/3519)- Bump net.bytebuddy:byte-buddy-agent from 1.14.11 to 1.14.12 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3520](https://togithub.com/graphql-java/graphql-java/pull/3520)- allow for a max result nodes limit for execution by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3525](https://togithub.com/graphql-java/graphql-java/pull/3525)- This provides and ability to disable Introspection by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3526](https://togithub.com/graphql-java/graphql-java/pull/3526)- This provides GoodFaithIntrospection by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3527](https://togithub.com/graphql-java/graphql-java/pull/3527)- Bump com.fasterxml.jackson.core:jackson-databind from 2.16.2 to 2.17.0by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3534](https://togithub.com/graphql-java/graphql-java/pull/3534)- adding a cycle schema analyzer by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3533](https://togithub.com/graphql-java/graphql-java/pull/3533)- Restrict the number of ENFs created and take advantage in GoodFaithintrospection by [@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3539](https://togithub.com/graphql-java/graphql-java/pull/3539)- Interning fieldnames (from netflix) by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3504](https://togithub.com/graphql-java/graphql-java/pull/3504)- Cheaper assertions with constant strings by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3507](https://togithub.com/graphql-java/graphql-java/pull/3507)- Small tweaks to not allocate objects for lambda closures by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3508](https://togithub.com/graphql-java/graphql-java/pull/3508)- Removed the deprecated Instrumentation methods and removes ER wrappingby [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3460](https://togithub.com/graphql-java/graphql-java/pull/3460)- Removed deprecated methods in parsing by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3509](https://togithub.com/graphql-java/graphql-java/pull/3509)- Removed deprecated methods in doc providers by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3510](https://togithub.com/graphql-java/graphql-java/pull/3510)- Removed deprecated methods in ExecutionInput by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3511](https://togithub.com/graphql-java/graphql-java/pull/3511)- Removed deprecated methods in ExecutionContext by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3512](https://togithub.com/graphql-java/graphql-java/pull/3512)- Removed deprecated methods in GraphQLSchema by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3515](https://togithub.com/graphql-java/graphql-java/pull/3515)- Removed deprecated methods and SchemaGeneratorPostProcessing by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3516](https://togithub.com/graphql-java/graphql-java/pull/3516)- Removed deprecated methods in ValidationError by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3517](https://togithub.com/graphql-java/graphql-java/pull/3517)- cleanup ExecutableNormalizedOperationFactory by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3544](https://togithub.com/graphql-java/graphql-java/pull/3544)- Made the field definition lookup more optimised by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3494](https://togithub.com/graphql-java/graphql-java/pull/3494)- Removed deprecated methods in code registry by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3514](https://togithub.com/graphql-java/graphql-java/pull/3514)- Improve Good faith introspection error handling by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3546](https://togithub.com/graphql-java/graphql-java/pull/3546)- Reduce the usage of CompletableFutures in graphql-java - scalars /enums and lists by [@&#8203;bbakerman](https://togithub.com/bbakerman)in[https://github.com/graphql-java/graphql-java/pull/3480](https://togithub.com/graphql-java/graphql-java/pull/3480)- add a default max nodes count for the ExecutableNormalizedFactory by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3547](https://togithub.com/graphql-java/graphql-java/pull/3547)- Reduce the usage of CompletableFutures in graphql-java - now withobjects by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3490](https://togithub.com/graphql-java/graphql-java/pull/3490)- Bump net.bytebuddy:byte-buddy from 1.14.12 to 1.14.13 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3554](https://togithub.com/graphql-java/graphql-java/pull/3554)- Bump net.bytebuddy:byte-buddy-agent from 1.14.12 to 1.14.13 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3555](https://togithub.com/graphql-java/graphql-java/pull/3555)- Stricter parseValue coercion for String, Int, Float, Boolean by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3553](https://togithub.com/graphql-java/graphql-java/pull/3553)- require non-empty directive locations by[@&#8203;jbellenger](https://togithub.com/jbellenger) in[https://github.com/graphql-java/graphql-java/pull/3552](https://togithub.com/graphql-java/graphql-java/pull/3552)- Putting createState back into Instrumentation by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3557](https://togithub.com/graphql-java/graphql-java/pull/3557)- Bump org.testng:testng from 7.9.0 to 7.10.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3559](https://togithub.com/graphql-java/graphql-java/pull/3559)- Bump io.github.gradle-nexus.publish-plugin from 1.3.0 to 2.0.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3560](https://togithub.com/graphql-java/graphql-java/pull/3560)- fix incremental partial result builder by[@&#8203;sbarker2](https://togithub.com/sbarker2) in[https://github.com/graphql-java/graphql-java/pull/3562](https://togithub.com/graphql-java/graphql-java/pull/3562)- Dataloader 3.3.0 upgrade by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3564](https://togithub.com/graphql-java/graphql-java/pull/3564)- strictMode for RuntimeWiring and TypeRuntimeWiring by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3565](https://togithub.com/graphql-java/graphql-java/pull/3565)- Bump org.testng:testng from 7.10.0 to 7.10.1 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3566](https://togithub.com/graphql-java/graphql-java/pull/3566)- Bump gradle/wrapper-validation-action from 2 to 3 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3567](https://togithub.com/graphql-java/graphql-java/pull/3567)- validate non-nullable directive args by[@&#8203;jbellenger](https://togithub.com/jbellenger) in[https://github.com/graphql-java/graphql-java/pull/3551](https://togithub.com/graphql-java/graphql-java/pull/3551)#### New Contributors- [@&#8203;salvoilmiosi](https://togithub.com/salvoilmiosi) made theirfirst contribution in[https://github.com/graphql-java/graphql-java/pull/3364](https://togithub.com/graphql-java/graphql-java/pull/3364)- [@&#8203;Juliano-Prado](https://togithub.com/Juliano-Prado) made theirfirst contribution in[https://github.com/graphql-java/graphql-java/pull/3439](https://togithub.com/graphql-java/graphql-java/pull/3439)- [@&#8203;bhabegger](https://togithub.com/bhabegger) made their firstcontribution in[https://github.com/graphql-java/graphql-java/pull/3506](https://togithub.com/graphql-java/graphql-java/pull/3506)- [@&#8203;sbarker2](https://togithub.com/sbarker2) made their firstcontribution in[https://github.com/graphql-java/graphql-java/pull/3562](https://togithub.com/graphql-java/graphql-java/pull/3562)**Full Changelog**:graphql-java/graphql-java@v21.5...v22.0</details>---### Configuration📅 **Schedule**: Branch creation - At any time (no schedule defined),Automerge - At any time (no schedule defined).🚦 **Automerge**: Enabled.♻ **Rebasing**: Whenever PR becomes conflicted, or you tick therebase/retry checkbox.🔕 **Ignore**: Close this PR and you won't be reminded about this updateagain.---- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, checkthis box---This PR has been generated by [MendRenovate](https://www.mend.io/free-developer-tools/renovate/). Viewrepository job log[here](https://developer.mend.io/github/camunda/zeebe).<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMTMuMSIsInVwZGF0ZWRJblZlciI6IjM3LjMyMS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJhdXRvbWVyZ2UiXX0=-->
github-merge-queuebot referenced this pull request in camunda/camundaApr 25, 2024
…n) (#17781)[![MendRenovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)This PR contains the following updates:| Package | Change | Age | Adoption | Passing | Confidence ||---|---|---|---|---|---||[com.graphql-java:graphql-java](https://togithub.com/graphql-java/graphql-java)| `21.5` -> `230521-nf-execution` |[![age](https://developer.mend.io/api/mc/badges/age/maven/com.graphql-java:graphql-java/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.graphql-java:graphql-java/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.graphql-java:graphql-java/21.5/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.graphql-java:graphql-java/21.5/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|---> [!WARNING]> Some dependencies could not be looked up. Check the DependencyDashboard for more information.---### Release Notes<details><summary>graphql-java/graphql-java(com.graphql-java:graphql-java)</summary>###[`v22.0`](https://togithub.com/graphql-java/graphql-java/releases/tag/v22.0):22.0[CompareSource](https://togithub.com/graphql-java/graphql-java/compare/v21.5...v22.0)We are pleased to announce the release of graphql-java v22.0.Thanks to everyone in the community who contributed to the release,whether that was code, helping to report issues, or participating indiscussions.This is a **breaking change** release.The graphql-java team takes breaking changes very seriously but in thename of performance we have made some significant breaking changes inthis release.### Major Performance ChangesPast releases have been very much performance focused and this one is nodifferent. However, this release is aiming to reduce memory pressuremore than reduce pure CPU usage. When the graphql-java engine isrunning, if it produces less objects it will ultimately run fasterbecause of reduced memory pressure and less garbage to collect.The engine has been changed in two major ways that reduce memorypressure.#### ExecutionResult wrappingThe first was that all values that come back got wrapped internally intoa `ExecutionResult` object where the `data` attribute was the value.This was a carry over from some very early GraphQL code but wasunnecessary and hence has been removed. The follow on effect of this isthat some `graphql.execution.ExecutionStrategy` protected methods and`graphql.execution.instrumentation.Instrumentation` methods used toreceive and return `ExecutionResult` values and no longer do, which isan API breaking change. We have made this breaking changes in the nameof memory pressure performance.#### CompletableFuture wrappingThe second major change is that the engine no longer exclusively uses`java.util.concurrent.CompletableFuture`s when composing togetherresults. Let us explain the past code first so we can discuss the newcode.`CompletableFuture` is a fantastic construct because it represents apromise to a value and it can also hold an exceptional state insideitself. Async programming with `CompletableFuture` is viral. If stage 1of some compute process returns a `CompletableFuture` then stage 2 and 3and 4 are likely to as well to ensure everything is asynchronous.We use to take values that were not asynchronous (such as DataFetcherthat returned a simple in memory object) and wrap them in a`CompletableFuture` so that all of the other code composed togetherusing `CompletableFuture` methods like `.thenApply()` and `.thenCompose`and so on. The code is cleaner if you use all `CompletableFuture` codepatterns.However many objects in a GraphQL request are not asynchronous butrather materialised objects in memory. Scalars, enums and list are oftenjust values immediately available to be used and allocating a`CompletableFuture` makes the code easier to write but it has a memorypressure cost.So we have sacrificed cleaner code for more memory performant code.graphql-java engine `graphql.execution.ExecutionStrategy` methods nowjust return `Object` where that object might be either a`CompletableFuture` or a materialised value.```java    private Object /*CompletableFuture<FetchedValue> | FetchedValue>*/       fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters) {```Notice we have lost type safety here. In the past this would have onlybeen `CompletableFuture<FetchedValue>` and hence been both type safe andasync composable.Now the caller of that method has to handle the async case where itmight be a `CompletableFuture<FetchedValue>` AND the materialised valuecase where it might be a `FetchedValue` but as most simple fields inGraphQL are in fact materialised values, this is worth the less cleancode.`DataFetchers` can of course continue to return `CompletableFuture`values and they will be handled in a polymorphic manner.The upshot of all this work is that the graphql-java engine allocatedway less `CompletableFuture` values and hence reduces the amount ofmemory used.#### Instrumentation ChangesThe above changes now mean means that before`graphql.execution.instrumentation.InstrumentationContext` used to begiven a `CompletableFuture` but now no longer does```java    void onDispatched(CompletableFuture<T> result);```is now```java    void onDispatched();```if you previously used the `CompletableFuture` to know when somethingwas completed, well `InstrumentationContext` has the same semanticsbecause it's completed method is similar in that it presents a value oran exception```java    void onCompleted(T result, Throwable t);````graphql.execution.instrumentation.Instrumentation` also had a lot ofdeprecated methods in place and these have been removed since the moreperformant shape of passing in`graphql.execution.instrumentation.InstrumentationState` has been inplace for quite a few releases.Some of the methods that received `ExecutionResult` wrapped values havealso changed as mentioned above.`Instrumentation` is probably the area that needs the most attention interms of breaking changes. If you have not moved off the deprecatedmethods, your custom `Instrumentation`s will no longer compile or run.#### Interning key stringsOur friends at Netflix provided a PR that interns certain key stringslike "field names" so that we create less String instances whenprocessing field names in queries that we know must be previouslyinterned in the schema.[https://github.com/graphql-java/graphql-java/pull/3504](https://togithub.com/graphql-java/graphql-java/pull/3504)#### The full list of performance related changeshttps://github.com/graphql-java/graphql-java/pulls?q=is%3Apr+milestone%3A%2222.0%22+label%3Aperformance### Major Changes#### [@&#8203;defer](https://togithub.com/defer) Experimental SupportSupport for the `@defer` directive has been added in an experimentalfashion. While `@defer` is still not in the released GraphQLspecification, we have judged it mature enough to support at this stageand the `graphql-js` reference implementation has support for it.https://github.com/graphql/graphql-wg/blob/main/rfcs/DeferStream.mdAt this stage we have not yet supported `@stream` but this is likely tobe included in a future release.### Breaking ChangesThere are quite a few API breaking changes in this release. In factthere are 22 PRs containing breaking API changes.#### Stricter parseValue coercion: Aligning with JS referenceimplementationWe have made changes to String, Boolean, Float, and Int `parseValue`coercion, to be consistent with the reference JS implementation. The keychange is `parseValue` is now stricter on accepted inputs.- String `parseValue` now requires input of type `String`. For example,a `Number` input `123` or a `Boolean` input `true` will no longer beaccepted.- Boolean `parseValue` now requires input of type `Boolean`. Forexample, a `String` input `"true"` will no longer be accepted.- Float `parseValue` now requires input of type `Number`. For example, a`String` input `"3.14"` will no longer be accepted.- Int `parseValue` now requires input of type `Number`. For example, a`String` input `"42"` will no longer be accepted.This is a breaking change. To help you migrate, in [version21.0](https://togithub.com/graphql-java/graphql-java/releases/tag/v21.0),we introduced the InputInterceptor[https://github.com/graphql-java/graphql-java/pull/3188](https://togithub.com/graphql-java/graphql-java/pull/3188)(and an implementation LegacyCoercingInputInterceptor[https://github.com/graphql-java/graphql-java/pull/3218](https://togithub.com/graphql-java/graphql-java/pull/3218))to provide a migration pathway. You can use this interceptor to monitorand modify values.For more, see[https://github.com/graphql-java/graphql-java/pull/3553](https://togithub.com/graphql-java/graphql-java/pull/3553)JS reference implementation:https://github.com/graphql/graphql-js/blob/main/src/type/scalars.ts#### Removing deprecated methodsMany methods that have been deprecated for a long time, sometimes evenup to 6 years, have finally been removed.The `CompletableFuture` unwrapping work mentioned above changed manymethods in the `graphql.execution.ExecutionStrategy` classes but wedon't expect this affect many people since very few people write theirown engines.That `CompletableFuture` unwrapping work also had knock on effects asmentioned above on `graphql.execution.instrumentation.Instrumentation`and hence this is the **most likely** place for there to becompatibility challenges in existing code.#### DataLoaderDispatcherInstrumentation has been removed and is nowbuilt into the engineThe code to dispatch `org.dataloader.DataLoader`s used to be aninstrumentation called `DataLoadersDataLoaderDispatcherInstrumentation`and it was automatically added at runtime. This approach has beenremoved.The equivalent code is now built into the graphql-java engine itself.`DataLoader`s can now always be used without any special setup. Thisalso allows the code to be more performant in how `DataLoader`s aredispatched.#### SL4J logging has been removedPreviously, the graphql-java engine would log at DEBUG level certainerrors or when fields get fetched. This has not proven used for from asupport point to the graphql-java team and also has a compliance cost inthat user generated content (UGC) and personally identifying information(PII) could end up being logged, which may not be allowed under regimeslike European General Data Protection Regulation (GDPR).If you want to log now we suggest you invest in a `Instrumentation` thatlogs key events and you can there for log what you want and in acompliant manner of your choosing.[https://github.com/graphql-java/graphql-java/pull/3403](https://togithub.com/graphql-java/graphql-java/pull/3403)#### The full list of API breaking changeshttps://github.com/graphql-java/graphql-java/pulls?q=is%3Apr+milestone%3A%2222.0%22+label%3A%22breaking+change%22### Other changes- Optional strict mode for RuntimeWiring and TypeRuntimeWiring, to avoidaccidentally having multiple datafetchers on the same element[#&#8203;3565](https://togithub.com/graphql-java/graphql-java/issues/3565)#### What's Changed- OneOf validation not being applied to nested inputs by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3365](https://togithub.com/graphql-java/graphql-java/pull/3365)- Bump me.champeau.jmh from 0.7.1 to 0.7.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3371](https://togithub.com/graphql-java/graphql-java/pull/3371)- Dutch translations for GraphQL Java by[@&#8203;jord1e](https://togithub.com/jord1e) in[https://github.com/graphql-java/graphql-java/pull/3031](https://togithub.com/graphql-java/graphql-java/pull/3031)- Add 'compute' family of methods to GraphQLContext by[@&#8203;salvoilmiosi](https://togithub.com/salvoilmiosi) in[https://github.com/graphql-java/graphql-java/pull/3364](https://togithub.com/graphql-java/graphql-java/pull/3364)- Handle list of [@&#8203;oneOf](https://togithub.com/oneOf) inputobjects by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3370](https://togithub.com/graphql-java/graphql-java/pull/3370)- Bump com.graphql-java:java-dataloader from 3.2.1 to 3.2.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3375](https://togithub.com/graphql-java/graphql-java/pull/3375)- Bump com.fasterxml.jackson.core:jackson-databind from 2.15.3 to 2.16.0by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3376](https://togithub.com/graphql-java/graphql-java/pull/3376)- Bump org.jetbrains:annotations from 24.0.1 to 24.1.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3377](https://togithub.com/graphql-java/graphql-java/pull/3377)- Add GitHub action to manage stale PRs and issues by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3359](https://togithub.com/graphql-java/graphql-java/pull/3359)- Bump actions/setup-node from 3 to 4 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3358](https://togithub.com/graphql-java/graphql-java/pull/3358)- Bump google-github-actions/auth from 1.1.1 to 1.2.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3381](https://togithub.com/graphql-java/graphql-java/pull/3381)- Update German translations by[@&#8203;jord1e](https://togithub.com/jord1e) in[https://github.com/graphql-java/graphql-java/pull/3368](https://togithub.com/graphql-java/graphql-java/pull/3368)- Bump google-github-actions/auth from 1.2.0 to 2.0.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3389](https://togithub.com/graphql-java/graphql-java/pull/3389)- Bump actions/setup-java from 3 to 4 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3390](https://togithub.com/graphql-java/graphql-java/pull/3390)- Add tag to exempt PRs and issues from the stale bot by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3391](https://togithub.com/graphql-java/graphql-java/pull/3391)- Bump org.codehaus.groovy:groovy from 3.0.19 to 3.0.20 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3402](https://togithub.com/graphql-java/graphql-java/pull/3402)- Bump com.fasterxml.jackson.core:jackson-databind from 2.16.0 to 2.16.1by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3400](https://togithub.com/graphql-java/graphql-java/pull/3400)- Bump actions/stale from 8 to 9 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3393](https://togithub.com/graphql-java/graphql-java/pull/3393)- Bump org.testng:testng from 7.8.0 to 7.9.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3407](https://togithub.com/graphql-java/graphql-java/pull/3407)- Cleaning up ValidationError constructors by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3405](https://togithub.com/graphql-java/graphql-java/pull/3405)- Refactor ENF Factory by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3410](https://togithub.com/graphql-java/graphql-java/pull/3410)- upgrade gradle to 8.5 by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3412](https://togithub.com/graphql-java/graphql-java/pull/3412)- Java 9 [@&#8203;Deprecated](https://togithub.com/Deprecated)annotation by [@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3406](https://togithub.com/graphql-java/graphql-java/pull/3406)- Defer support on ENFs by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3395](https://togithub.com/graphql-java/graphql-java/pull/3395)- Bump google-github-actions/auth from 2.0.0 to 2.0.1 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3416](https://togithub.com/graphql-java/graphql-java/pull/3416)- 3385 - fix for the turkish eye 🧿 by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3388](https://togithub.com/graphql-java/graphql-java/pull/3388)- Update deprecated methods in scalar coercion documentation example by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3413](https://togithub.com/graphql-java/graphql-java/pull/3413)- Propagate GraphQLContext when completing fields - fix missingConditionalNodesDecision issue by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3411](https://togithub.com/graphql-java/graphql-java/pull/3411)- This removes SLF4J from the code base by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3403](https://togithub.com/graphql-java/graphql-java/pull/3403)- Check in Gradle files for Gradle 8.5 by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3419](https://togithub.com/graphql-java/graphql-java/pull/3419)- Bump google-github-actions/auth from 2.0.1 to 2.1.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3420](https://togithub.com/graphql-java/graphql-java/pull/3420)- Bump gradle/wrapper-validation-action from 1 to 2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3437](https://togithub.com/graphql-java/graphql-java/pull/3437)- Skip signing for local and upgrade to Gradle 8.6 by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3441](https://togithub.com/graphql-java/graphql-java/pull/3441)- ExecutionResult wrapping can be avoided - reduces memory allocationsand GC by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3330](https://togithub.com/graphql-java/graphql-java/pull/3330)- Bump org.eclipse.jetty:jetty-server from 11.0.15 to 11.0.20 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3445](https://togithub.com/graphql-java/graphql-java/pull/3445)- Bump google-github-actions/auth from 2.1.0 to 2.1.1 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3446](https://togithub.com/graphql-java/graphql-java/pull/3446)- Defer execution 2024 by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3421](https://togithub.com/graphql-java/graphql-java/pull/3421)- Add class hierarchy for incremental execution result by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3414](https://togithub.com/graphql-java/graphql-java/pull/3414)- ensure that instrumentations get an executionid by[@&#8203;jbellenger](https://togithub.com/jbellenger) in[https://github.com/graphql-java/graphql-java/pull/3448](https://togithub.com/graphql-java/graphql-java/pull/3448)- handle more Schema diff applied directives cases by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3451](https://togithub.com/graphql-java/graphql-java/pull/3451)- Defer execution refactoring after first merge by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3450](https://togithub.com/graphql-java/graphql-java/pull/3450)- Fix bug where deferred payloads were not using field aliases by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3449](https://togithub.com/graphql-java/graphql-java/pull/3449)- Fix invalid AST printer: add escape characters to single linedescriptions by [@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3443](https://togithub.com/graphql-java/graphql-java/pull/3443)- Fix flaky defer test by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3455](https://togithub.com/graphql-java/graphql-java/pull/3455)- Native DataLoader dispatch strategy without Instrumentation by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3447](https://togithub.com/graphql-java/graphql-java/pull/3447)- Avoid repeated Map lookups in SimpleFieldValidation by[@&#8203;kilink](https://togithub.com/kilink) in[https://github.com/graphql-java/graphql-java/pull/3461](https://togithub.com/graphql-java/graphql-java/pull/3461)- Fix oneOf bug when variables is empty by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3430](https://togithub.com/graphql-java/graphql-java/pull/3430)- Avoid Map for instrumentation state by[@&#8203;DanielThomas](https://togithub.com/DanielThomas) in[https://github.com/graphql-java/graphql-java/pull/3459](https://togithub.com/graphql-java/graphql-java/pull/3459)- Small code tweaks on recent PR by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3463](https://togithub.com/graphql-java/graphql-java/pull/3463)- Use String concatenation instead of StringBuilder by[@&#8203;kilink](https://togithub.com/kilink) in[https://github.com/graphql-java/graphql-java/pull/3464](https://togithub.com/graphql-java/graphql-java/pull/3464)- Added Async benchmark for future changes by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3467](https://togithub.com/graphql-java/graphql-java/pull/3467)- cleaning up the jhm benchmarks by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3468](https://togithub.com/graphql-java/graphql-java/pull/3468)- fixed async benchmark - it was nonsensical before by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3469](https://togithub.com/graphql-java/graphql-java/pull/3469)- andis suggestions on batch size by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3472](https://togithub.com/graphql-java/graphql-java/pull/3472)- Fix schema builder to copy extensionDefinitions by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3470](https://togithub.com/graphql-java/graphql-java/pull/3470)- Added an id generator that's more performant by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3466](https://togithub.com/graphql-java/graphql-java/pull/3466)- Bump google-github-actions/auth from 2.1.1 to 2.1.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3473](https://togithub.com/graphql-java/graphql-java/pull/3473)- Tweaked id generator name by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3474](https://togithub.com/graphql-java/graphql-java/pull/3474)- Using object instead of CF in DispatcherStrategy interface by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3479](https://togithub.com/graphql-java/graphql-java/pull/3479)- Added a more complex query benchmark by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3476](https://togithub.com/graphql-java/graphql-java/pull/3476)- Now allows the benchmark to go into profiling mode by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3485](https://togithub.com/graphql-java/graphql-java/pull/3485)- Now allows the benchmark to go into profiling mode - 2 by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3486](https://togithub.com/graphql-java/graphql-java/pull/3486)- Avoid repeated calls to getFieldDef and unnecessary immutablebuilders/collections by[@&#8203;DanielThomas](https://togithub.com/DanielThomas) in[https://github.com/graphql-java/graphql-java/pull/3478](https://togithub.com/graphql-java/graphql-java/pull/3478)- This removes the CompletableFuture signature fromInstrumentationContext by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3457](https://togithub.com/graphql-java/graphql-java/pull/3457)- Don't build a builder object and then turn it into the actual objectby [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3465](https://togithub.com/graphql-java/graphql-java/pull/3465)- directive filtering during printing by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3387](https://togithub.com/graphql-java/graphql-java/pull/3387)- Updated helper code for profiler attachment by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3491](https://togithub.com/graphql-java/graphql-java/pull/3491)- Combined benchmark runner by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3493](https://togithub.com/graphql-java/graphql-java/pull/3493)- Defer validation by[@&#8203;Juliano-Prado](https://togithub.com/Juliano-Prado) in[https://github.com/graphql-java/graphql-java/pull/3439](https://togithub.com/graphql-java/graphql-java/pull/3439)- Does not allocate a default deferred context that is thrown away ontransform by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3484](https://togithub.com/graphql-java/graphql-java/pull/3484)- Bump org.codehaus.groovy:groovy from 3.0.20 to 3.0.21 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3497](https://togithub.com/graphql-java/graphql-java/pull/3497)- Get fieldDef improvements from Netflix by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3499](https://togithub.com/graphql-java/graphql-java/pull/3499)- recreating the netflix Intern field names PR by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3503](https://togithub.com/graphql-java/graphql-java/pull/3503)- adding a tracking agent by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3433](https://togithub.com/graphql-java/graphql-java/pull/3433)- Map benchmarks by [@&#8203;bbakerman](https://togithub.com/bbakerman)in[https://github.com/graphql-java/graphql-java/pull/3488](https://togithub.com/graphql-java/graphql-java/pull/3488)- A CompleteableFuture benchmark by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3492](https://togithub.com/graphql-java/graphql-java/pull/3492)- Fix printing of union types by[@&#8203;bhabegger](https://togithub.com/bhabegger) in[https://github.com/graphql-java/graphql-java/pull/3506](https://togithub.com/graphql-java/graphql-java/pull/3506)- SubscriptionUniqueRootField validation to check multiple fragments -Validation Bug fix by[@&#8203;Juliano-Prado](https://togithub.com/Juliano-Prado) in[https://github.com/graphql-java/graphql-java/pull/3481](https://togithub.com/graphql-java/graphql-java/pull/3481)- Return empty singleton DirectivesHolder if directives are empty by[@&#8203;gnawf](https://togithub.com/gnawf) in[https://github.com/graphql-java/graphql-java/pull/3518](https://togithub.com/graphql-java/graphql-java/pull/3518)- Bump org.junit.jupiter:junit-jupiter from 5.7.1 to 5.10.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3523](https://togithub.com/graphql-java/graphql-java/pull/3523)- Bump org.assertj:assertj-core from 3.25.1 to 3.25.3 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3521](https://togithub.com/graphql-java/graphql-java/pull/3521)- Bump net.bytebuddy:byte-buddy from 1.14.11 to 1.14.12 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3522](https://togithub.com/graphql-java/graphql-java/pull/3522)- Bump com.fasterxml.jackson.core:jackson-databind from 2.16.1 to 2.16.2by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3519](https://togithub.com/graphql-java/graphql-java/pull/3519)- Bump net.bytebuddy:byte-buddy-agent from 1.14.11 to 1.14.12 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3520](https://togithub.com/graphql-java/graphql-java/pull/3520)- allow for a max result nodes limit for execution by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3525](https://togithub.com/graphql-java/graphql-java/pull/3525)- This provides and ability to disable Introspection by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3526](https://togithub.com/graphql-java/graphql-java/pull/3526)- This provides GoodFaithIntrospection by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3527](https://togithub.com/graphql-java/graphql-java/pull/3527)- Bump com.fasterxml.jackson.core:jackson-databind from 2.16.2 to 2.17.0by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3534](https://togithub.com/graphql-java/graphql-java/pull/3534)- adding a cycle schema analyzer by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3533](https://togithub.com/graphql-java/graphql-java/pull/3533)- Restrict the number of ENFs created and take advantage in GoodFaithintrospection by [@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3539](https://togithub.com/graphql-java/graphql-java/pull/3539)- Interning fieldnames (from netflix) by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3504](https://togithub.com/graphql-java/graphql-java/pull/3504)- Cheaper assertions with constant strings by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3507](https://togithub.com/graphql-java/graphql-java/pull/3507)- Small tweaks to not allocate objects for lambda closures by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3508](https://togithub.com/graphql-java/graphql-java/pull/3508)- Removed the deprecated Instrumentation methods and removes ER wrappingby [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3460](https://togithub.com/graphql-java/graphql-java/pull/3460)- Removed deprecated methods in parsing by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3509](https://togithub.com/graphql-java/graphql-java/pull/3509)- Removed deprecated methods in doc providers by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3510](https://togithub.com/graphql-java/graphql-java/pull/3510)- Removed deprecated methods in ExecutionInput by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3511](https://togithub.com/graphql-java/graphql-java/pull/3511)- Removed deprecated methods in ExecutionContext by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3512](https://togithub.com/graphql-java/graphql-java/pull/3512)- Removed deprecated methods in GraphQLSchema by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3515](https://togithub.com/graphql-java/graphql-java/pull/3515)- Removed deprecated methods and SchemaGeneratorPostProcessing by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3516](https://togithub.com/graphql-java/graphql-java/pull/3516)- Removed deprecated methods in ValidationError by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3517](https://togithub.com/graphql-java/graphql-java/pull/3517)- cleanup ExecutableNormalizedOperationFactory by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3544](https://togithub.com/graphql-java/graphql-java/pull/3544)- Made the field definition lookup more optimised by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3494](https://togithub.com/graphql-java/graphql-java/pull/3494)- Removed deprecated methods in code registry by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3514](https://togithub.com/graphql-java/graphql-java/pull/3514)- Improve Good faith introspection error handling by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3546](https://togithub.com/graphql-java/graphql-java/pull/3546)- Reduce the usage of CompletableFutures in graphql-java - scalars /enums and lists by [@&#8203;bbakerman](https://togithub.com/bbakerman)in[https://github.com/graphql-java/graphql-java/pull/3480](https://togithub.com/graphql-java/graphql-java/pull/3480)- add a default max nodes count for the ExecutableNormalizedFactory by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3547](https://togithub.com/graphql-java/graphql-java/pull/3547)- Reduce the usage of CompletableFutures in graphql-java - now withobjects by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3490](https://togithub.com/graphql-java/graphql-java/pull/3490)- Bump net.bytebuddy:byte-buddy from 1.14.12 to 1.14.13 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3554](https://togithub.com/graphql-java/graphql-java/pull/3554)- Bump net.bytebuddy:byte-buddy-agent from 1.14.12 to 1.14.13 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3555](https://togithub.com/graphql-java/graphql-java/pull/3555)- Stricter parseValue coercion for String, Int, Float, Boolean by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3553](https://togithub.com/graphql-java/graphql-java/pull/3553)- require non-empty directive locations by[@&#8203;jbellenger](https://togithub.com/jbellenger) in[https://github.com/graphql-java/graphql-java/pull/3552](https://togithub.com/graphql-java/graphql-java/pull/3552)- Putting createState back into Instrumentation by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3557](https://togithub.com/graphql-java/graphql-java/pull/3557)- Bump org.testng:testng from 7.9.0 to 7.10.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3559](https://togithub.com/graphql-java/graphql-java/pull/3559)- Bump io.github.gradle-nexus.publish-plugin from 1.3.0 to 2.0.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3560](https://togithub.com/graphql-java/graphql-java/pull/3560)- fix incremental partial result builder by[@&#8203;sbarker2](https://togithub.com/sbarker2) in[https://github.com/graphql-java/graphql-java/pull/3562](https://togithub.com/graphql-java/graphql-java/pull/3562)- Dataloader 3.3.0 upgrade by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3564](https://togithub.com/graphql-java/graphql-java/pull/3564)- strictMode for RuntimeWiring and TypeRuntimeWiring by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3565](https://togithub.com/graphql-java/graphql-java/pull/3565)- Bump org.testng:testng from 7.10.0 to 7.10.1 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3566](https://togithub.com/graphql-java/graphql-java/pull/3566)- Bump gradle/wrapper-validation-action from 2 to 3 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3567](https://togithub.com/graphql-java/graphql-java/pull/3567)- validate non-nullable directive args by[@&#8203;jbellenger](https://togithub.com/jbellenger) in[https://github.com/graphql-java/graphql-java/pull/3551](https://togithub.com/graphql-java/graphql-java/pull/3551)#### New Contributors- [@&#8203;salvoilmiosi](https://togithub.com/salvoilmiosi) made theirfirst contribution in[https://github.com/graphql-java/graphql-java/pull/3364](https://togithub.com/graphql-java/graphql-java/pull/3364)- [@&#8203;Juliano-Prado](https://togithub.com/Juliano-Prado) made theirfirst contribution in[https://github.com/graphql-java/graphql-java/pull/3439](https://togithub.com/graphql-java/graphql-java/pull/3439)- [@&#8203;bhabegger](https://togithub.com/bhabegger) made their firstcontribution in[https://github.com/graphql-java/graphql-java/pull/3506](https://togithub.com/graphql-java/graphql-java/pull/3506)- [@&#8203;sbarker2](https://togithub.com/sbarker2) made their firstcontribution in[https://github.com/graphql-java/graphql-java/pull/3562](https://togithub.com/graphql-java/graphql-java/pull/3562)**Full Changelog**:graphql-java/graphql-java@v21.5...v22.0</details>---### Configuration📅 **Schedule**: Branch creation - At any time (no schedule defined),Automerge - At any time (no schedule defined).🚦 **Automerge**: Enabled.♻ **Rebasing**: Whenever PR becomes conflicted, or you tick therebase/retry checkbox.🔕 **Ignore**: Close this PR and you won't be reminded about this updateagain.---- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, checkthis box---This PR has been generated by [MendRenovate](https://www.mend.io/free-developer-tools/renovate/). Viewrepository job log[here](https://developer.mend.io/github/camunda/zeebe).<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMTMuMSIsInVwZGF0ZWRJblZlciI6IjM3LjMyMS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJhdXRvbWVyZ2UiXX0=-->
github-merge-queuebot referenced this pull request in camunda/camundaApr 25, 2024
…n) (#17781)[![MendRenovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)This PR contains the following updates:| Package | Change | Age | Adoption | Passing | Confidence ||---|---|---|---|---|---||[com.graphql-java:graphql-java](https://togithub.com/graphql-java/graphql-java)| `21.5` -> `230521-nf-execution` |[![age](https://developer.mend.io/api/mc/badges/age/maven/com.graphql-java:graphql-java/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.graphql-java:graphql-java/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.graphql-java:graphql-java/21.5/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.graphql-java:graphql-java/21.5/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|---> [!WARNING]> Some dependencies could not be looked up. Check the DependencyDashboard for more information.---### Release Notes<details><summary>graphql-java/graphql-java(com.graphql-java:graphql-java)</summary>###[`v22.0`](https://togithub.com/graphql-java/graphql-java/releases/tag/v22.0):22.0[CompareSource](https://togithub.com/graphql-java/graphql-java/compare/v21.5...v22.0)We are pleased to announce the release of graphql-java v22.0.Thanks to everyone in the community who contributed to the release,whether that was code, helping to report issues, or participating indiscussions.This is a **breaking change** release.The graphql-java team takes breaking changes very seriously but in thename of performance we have made some significant breaking changes inthis release.### Major Performance ChangesPast releases have been very much performance focused and this one is nodifferent. However, this release is aiming to reduce memory pressuremore than reduce pure CPU usage. When the graphql-java engine isrunning, if it produces less objects it will ultimately run fasterbecause of reduced memory pressure and less garbage to collect.The engine has been changed in two major ways that reduce memorypressure.#### ExecutionResult wrappingThe first was that all values that come back got wrapped internally intoa `ExecutionResult` object where the `data` attribute was the value.This was a carry over from some very early GraphQL code but wasunnecessary and hence has been removed. The follow on effect of this isthat some `graphql.execution.ExecutionStrategy` protected methods and`graphql.execution.instrumentation.Instrumentation` methods used toreceive and return `ExecutionResult` values and no longer do, which isan API breaking change. We have made this breaking changes in the nameof memory pressure performance.#### CompletableFuture wrappingThe second major change is that the engine no longer exclusively uses`java.util.concurrent.CompletableFuture`s when composing togetherresults. Let us explain the past code first so we can discuss the newcode.`CompletableFuture` is a fantastic construct because it represents apromise to a value and it can also hold an exceptional state insideitself. Async programming with `CompletableFuture` is viral. If stage 1of some compute process returns a `CompletableFuture` then stage 2 and 3and 4 are likely to as well to ensure everything is asynchronous.We use to take values that were not asynchronous (such as DataFetcherthat returned a simple in memory object) and wrap them in a`CompletableFuture` so that all of the other code composed togetherusing `CompletableFuture` methods like `.thenApply()` and `.thenCompose`and so on. The code is cleaner if you use all `CompletableFuture` codepatterns.However many objects in a GraphQL request are not asynchronous butrather materialised objects in memory. Scalars, enums and list are oftenjust values immediately available to be used and allocating a`CompletableFuture` makes the code easier to write but it has a memorypressure cost.So we have sacrificed cleaner code for more memory performant code.graphql-java engine `graphql.execution.ExecutionStrategy` methods nowjust return `Object` where that object might be either a`CompletableFuture` or a materialised value.```java    private Object /*CompletableFuture<FetchedValue> | FetchedValue>*/       fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters) {```Notice we have lost type safety here. In the past this would have onlybeen `CompletableFuture<FetchedValue>` and hence been both type safe andasync composable.Now the caller of that method has to handle the async case where itmight be a `CompletableFuture<FetchedValue>` AND the materialised valuecase where it might be a `FetchedValue` but as most simple fields inGraphQL are in fact materialised values, this is worth the less cleancode.`DataFetchers` can of course continue to return `CompletableFuture`values and they will be handled in a polymorphic manner.The upshot of all this work is that the graphql-java engine allocatedway less `CompletableFuture` values and hence reduces the amount ofmemory used.#### Instrumentation ChangesThe above changes now mean means that before`graphql.execution.instrumentation.InstrumentationContext` used to begiven a `CompletableFuture` but now no longer does```java    void onDispatched(CompletableFuture<T> result);```is now```java    void onDispatched();```if you previously used the `CompletableFuture` to know when somethingwas completed, well `InstrumentationContext` has the same semanticsbecause it's completed method is similar in that it presents a value oran exception```java    void onCompleted(T result, Throwable t);````graphql.execution.instrumentation.Instrumentation` also had a lot ofdeprecated methods in place and these have been removed since the moreperformant shape of passing in`graphql.execution.instrumentation.InstrumentationState` has been inplace for quite a few releases.Some of the methods that received `ExecutionResult` wrapped values havealso changed as mentioned above.`Instrumentation` is probably the area that needs the most attention interms of breaking changes. If you have not moved off the deprecatedmethods, your custom `Instrumentation`s will no longer compile or run.#### Interning key stringsOur friends at Netflix provided a PR that interns certain key stringslike "field names" so that we create less String instances whenprocessing field names in queries that we know must be previouslyinterned in the schema.[https://github.com/graphql-java/graphql-java/pull/3504](https://togithub.com/graphql-java/graphql-java/pull/3504)#### The full list of performance related changeshttps://github.com/graphql-java/graphql-java/pulls?q=is%3Apr+milestone%3A%2222.0%22+label%3Aperformance### Major Changes#### [@&#8203;defer](https://togithub.com/defer) Experimental SupportSupport for the `@defer` directive has been added in an experimentalfashion. While `@defer` is still not in the released GraphQLspecification, we have judged it mature enough to support at this stageand the `graphql-js` reference implementation has support for it.https://github.com/graphql/graphql-wg/blob/main/rfcs/DeferStream.mdAt this stage we have not yet supported `@stream` but this is likely tobe included in a future release.### Breaking ChangesThere are quite a few API breaking changes in this release. In factthere are 22 PRs containing breaking API changes.#### Stricter parseValue coercion: Aligning with JS referenceimplementationWe have made changes to String, Boolean, Float, and Int `parseValue`coercion, to be consistent with the reference JS implementation. The keychange is `parseValue` is now stricter on accepted inputs.- String `parseValue` now requires input of type `String`. For example,a `Number` input `123` or a `Boolean` input `true` will no longer beaccepted.- Boolean `parseValue` now requires input of type `Boolean`. Forexample, a `String` input `"true"` will no longer be accepted.- Float `parseValue` now requires input of type `Number`. For example, a`String` input `"3.14"` will no longer be accepted.- Int `parseValue` now requires input of type `Number`. For example, a`String` input `"42"` will no longer be accepted.This is a breaking change. To help you migrate, in [version21.0](https://togithub.com/graphql-java/graphql-java/releases/tag/v21.0),we introduced the InputInterceptor[https://github.com/graphql-java/graphql-java/pull/3188](https://togithub.com/graphql-java/graphql-java/pull/3188)(and an implementation LegacyCoercingInputInterceptor[https://github.com/graphql-java/graphql-java/pull/3218](https://togithub.com/graphql-java/graphql-java/pull/3218))to provide a migration pathway. You can use this interceptor to monitorand modify values.For more, see[https://github.com/graphql-java/graphql-java/pull/3553](https://togithub.com/graphql-java/graphql-java/pull/3553)JS reference implementation:https://github.com/graphql/graphql-js/blob/main/src/type/scalars.ts#### Removing deprecated methodsMany methods that have been deprecated for a long time, sometimes evenup to 6 years, have finally been removed.The `CompletableFuture` unwrapping work mentioned above changed manymethods in the `graphql.execution.ExecutionStrategy` classes but wedon't expect this affect many people since very few people write theirown engines.That `CompletableFuture` unwrapping work also had knock on effects asmentioned above on `graphql.execution.instrumentation.Instrumentation`and hence this is the **most likely** place for there to becompatibility challenges in existing code.#### DataLoaderDispatcherInstrumentation has been removed and is nowbuilt into the engineThe code to dispatch `org.dataloader.DataLoader`s used to be aninstrumentation called `DataLoadersDataLoaderDispatcherInstrumentation`and it was automatically added at runtime. This approach has beenremoved.The equivalent code is now built into the graphql-java engine itself.`DataLoader`s can now always be used without any special setup. Thisalso allows the code to be more performant in how `DataLoader`s aredispatched.#### SL4J logging has been removedPreviously, the graphql-java engine would log at DEBUG level certainerrors or when fields get fetched. This has not proven used for from asupport point to the graphql-java team and also has a compliance cost inthat user generated content (UGC) and personally identifying information(PII) could end up being logged, which may not be allowed under regimeslike European General Data Protection Regulation (GDPR).If you want to log now we suggest you invest in a `Instrumentation` thatlogs key events and you can there for log what you want and in acompliant manner of your choosing.[https://github.com/graphql-java/graphql-java/pull/3403](https://togithub.com/graphql-java/graphql-java/pull/3403)#### The full list of API breaking changeshttps://github.com/graphql-java/graphql-java/pulls?q=is%3Apr+milestone%3A%2222.0%22+label%3A%22breaking+change%22### Other changes- Optional strict mode for RuntimeWiring and TypeRuntimeWiring, to avoidaccidentally having multiple datafetchers on the same element[#&#8203;3565](https://togithub.com/graphql-java/graphql-java/issues/3565)#### What's Changed- OneOf validation not being applied to nested inputs by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3365](https://togithub.com/graphql-java/graphql-java/pull/3365)- Bump me.champeau.jmh from 0.7.1 to 0.7.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3371](https://togithub.com/graphql-java/graphql-java/pull/3371)- Dutch translations for GraphQL Java by[@&#8203;jord1e](https://togithub.com/jord1e) in[https://github.com/graphql-java/graphql-java/pull/3031](https://togithub.com/graphql-java/graphql-java/pull/3031)- Add 'compute' family of methods to GraphQLContext by[@&#8203;salvoilmiosi](https://togithub.com/salvoilmiosi) in[https://github.com/graphql-java/graphql-java/pull/3364](https://togithub.com/graphql-java/graphql-java/pull/3364)- Handle list of [@&#8203;oneOf](https://togithub.com/oneOf) inputobjects by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3370](https://togithub.com/graphql-java/graphql-java/pull/3370)- Bump com.graphql-java:java-dataloader from 3.2.1 to 3.2.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3375](https://togithub.com/graphql-java/graphql-java/pull/3375)- Bump com.fasterxml.jackson.core:jackson-databind from 2.15.3 to 2.16.0by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3376](https://togithub.com/graphql-java/graphql-java/pull/3376)- Bump org.jetbrains:annotations from 24.0.1 to 24.1.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3377](https://togithub.com/graphql-java/graphql-java/pull/3377)- Add GitHub action to manage stale PRs and issues by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3359](https://togithub.com/graphql-java/graphql-java/pull/3359)- Bump actions/setup-node from 3 to 4 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3358](https://togithub.com/graphql-java/graphql-java/pull/3358)- Bump google-github-actions/auth from 1.1.1 to 1.2.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3381](https://togithub.com/graphql-java/graphql-java/pull/3381)- Update German translations by[@&#8203;jord1e](https://togithub.com/jord1e) in[https://github.com/graphql-java/graphql-java/pull/3368](https://togithub.com/graphql-java/graphql-java/pull/3368)- Bump google-github-actions/auth from 1.2.0 to 2.0.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3389](https://togithub.com/graphql-java/graphql-java/pull/3389)- Bump actions/setup-java from 3 to 4 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3390](https://togithub.com/graphql-java/graphql-java/pull/3390)- Add tag to exempt PRs and issues from the stale bot by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3391](https://togithub.com/graphql-java/graphql-java/pull/3391)- Bump org.codehaus.groovy:groovy from 3.0.19 to 3.0.20 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3402](https://togithub.com/graphql-java/graphql-java/pull/3402)- Bump com.fasterxml.jackson.core:jackson-databind from 2.16.0 to 2.16.1by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3400](https://togithub.com/graphql-java/graphql-java/pull/3400)- Bump actions/stale from 8 to 9 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3393](https://togithub.com/graphql-java/graphql-java/pull/3393)- Bump org.testng:testng from 7.8.0 to 7.9.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3407](https://togithub.com/graphql-java/graphql-java/pull/3407)- Cleaning up ValidationError constructors by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3405](https://togithub.com/graphql-java/graphql-java/pull/3405)- Refactor ENF Factory by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3410](https://togithub.com/graphql-java/graphql-java/pull/3410)- upgrade gradle to 8.5 by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3412](https://togithub.com/graphql-java/graphql-java/pull/3412)- Java 9 [@&#8203;Deprecated](https://togithub.com/Deprecated)annotation by [@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3406](https://togithub.com/graphql-java/graphql-java/pull/3406)- Defer support on ENFs by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3395](https://togithub.com/graphql-java/graphql-java/pull/3395)- Bump google-github-actions/auth from 2.0.0 to 2.0.1 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3416](https://togithub.com/graphql-java/graphql-java/pull/3416)- 3385 - fix for the turkish eye 🧿 by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3388](https://togithub.com/graphql-java/graphql-java/pull/3388)- Update deprecated methods in scalar coercion documentation example by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3413](https://togithub.com/graphql-java/graphql-java/pull/3413)- Propagate GraphQLContext when completing fields - fix missingConditionalNodesDecision issue by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3411](https://togithub.com/graphql-java/graphql-java/pull/3411)- This removes SLF4J from the code base by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3403](https://togithub.com/graphql-java/graphql-java/pull/3403)- Check in Gradle files for Gradle 8.5 by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3419](https://togithub.com/graphql-java/graphql-java/pull/3419)- Bump google-github-actions/auth from 2.0.1 to 2.1.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3420](https://togithub.com/graphql-java/graphql-java/pull/3420)- Bump gradle/wrapper-validation-action from 1 to 2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3437](https://togithub.com/graphql-java/graphql-java/pull/3437)- Skip signing for local and upgrade to Gradle 8.6 by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3441](https://togithub.com/graphql-java/graphql-java/pull/3441)- ExecutionResult wrapping can be avoided - reduces memory allocationsand GC by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3330](https://togithub.com/graphql-java/graphql-java/pull/3330)- Bump org.eclipse.jetty:jetty-server from 11.0.15 to 11.0.20 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3445](https://togithub.com/graphql-java/graphql-java/pull/3445)- Bump google-github-actions/auth from 2.1.0 to 2.1.1 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3446](https://togithub.com/graphql-java/graphql-java/pull/3446)- Defer execution 2024 by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3421](https://togithub.com/graphql-java/graphql-java/pull/3421)- Add class hierarchy for incremental execution result by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3414](https://togithub.com/graphql-java/graphql-java/pull/3414)- ensure that instrumentations get an executionid by[@&#8203;jbellenger](https://togithub.com/jbellenger) in[https://github.com/graphql-java/graphql-java/pull/3448](https://togithub.com/graphql-java/graphql-java/pull/3448)- handle more Schema diff applied directives cases by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3451](https://togithub.com/graphql-java/graphql-java/pull/3451)- Defer execution refactoring after first merge by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3450](https://togithub.com/graphql-java/graphql-java/pull/3450)- Fix bug where deferred payloads were not using field aliases by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3449](https://togithub.com/graphql-java/graphql-java/pull/3449)- Fix invalid AST printer: add escape characters to single linedescriptions by [@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3443](https://togithub.com/graphql-java/graphql-java/pull/3443)- Fix flaky defer test by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3455](https://togithub.com/graphql-java/graphql-java/pull/3455)- Native DataLoader dispatch strategy without Instrumentation by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3447](https://togithub.com/graphql-java/graphql-java/pull/3447)- Avoid repeated Map lookups in SimpleFieldValidation by[@&#8203;kilink](https://togithub.com/kilink) in[https://github.com/graphql-java/graphql-java/pull/3461](https://togithub.com/graphql-java/graphql-java/pull/3461)- Fix oneOf bug when variables is empty by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3430](https://togithub.com/graphql-java/graphql-java/pull/3430)- Avoid Map for instrumentation state by[@&#8203;DanielThomas](https://togithub.com/DanielThomas) in[https://github.com/graphql-java/graphql-java/pull/3459](https://togithub.com/graphql-java/graphql-java/pull/3459)- Small code tweaks on recent PR by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3463](https://togithub.com/graphql-java/graphql-java/pull/3463)- Use String concatenation instead of StringBuilder by[@&#8203;kilink](https://togithub.com/kilink) in[https://github.com/graphql-java/graphql-java/pull/3464](https://togithub.com/graphql-java/graphql-java/pull/3464)- Added Async benchmark for future changes by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3467](https://togithub.com/graphql-java/graphql-java/pull/3467)- cleaning up the jhm benchmarks by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3468](https://togithub.com/graphql-java/graphql-java/pull/3468)- fixed async benchmark - it was nonsensical before by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3469](https://togithub.com/graphql-java/graphql-java/pull/3469)- andis suggestions on batch size by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3472](https://togithub.com/graphql-java/graphql-java/pull/3472)- Fix schema builder to copy extensionDefinitions by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3470](https://togithub.com/graphql-java/graphql-java/pull/3470)- Added an id generator that's more performant by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3466](https://togithub.com/graphql-java/graphql-java/pull/3466)- Bump google-github-actions/auth from 2.1.1 to 2.1.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3473](https://togithub.com/graphql-java/graphql-java/pull/3473)- Tweaked id generator name by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3474](https://togithub.com/graphql-java/graphql-java/pull/3474)- Using object instead of CF in DispatcherStrategy interface by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3479](https://togithub.com/graphql-java/graphql-java/pull/3479)- Added a more complex query benchmark by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3476](https://togithub.com/graphql-java/graphql-java/pull/3476)- Now allows the benchmark to go into profiling mode by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3485](https://togithub.com/graphql-java/graphql-java/pull/3485)- Now allows the benchmark to go into profiling mode - 2 by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3486](https://togithub.com/graphql-java/graphql-java/pull/3486)- Avoid repeated calls to getFieldDef and unnecessary immutablebuilders/collections by[@&#8203;DanielThomas](https://togithub.com/DanielThomas) in[https://github.com/graphql-java/graphql-java/pull/3478](https://togithub.com/graphql-java/graphql-java/pull/3478)- This removes the CompletableFuture signature fromInstrumentationContext by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3457](https://togithub.com/graphql-java/graphql-java/pull/3457)- Don't build a builder object and then turn it into the actual objectby [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3465](https://togithub.com/graphql-java/graphql-java/pull/3465)- directive filtering during printing by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3387](https://togithub.com/graphql-java/graphql-java/pull/3387)- Updated helper code for profiler attachment by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3491](https://togithub.com/graphql-java/graphql-java/pull/3491)- Combined benchmark runner by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3493](https://togithub.com/graphql-java/graphql-java/pull/3493)- Defer validation by[@&#8203;Juliano-Prado](https://togithub.com/Juliano-Prado) in[https://github.com/graphql-java/graphql-java/pull/3439](https://togithub.com/graphql-java/graphql-java/pull/3439)- Does not allocate a default deferred context that is thrown away ontransform by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3484](https://togithub.com/graphql-java/graphql-java/pull/3484)- Bump org.codehaus.groovy:groovy from 3.0.20 to 3.0.21 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3497](https://togithub.com/graphql-java/graphql-java/pull/3497)- Get fieldDef improvements from Netflix by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3499](https://togithub.com/graphql-java/graphql-java/pull/3499)- recreating the netflix Intern field names PR by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3503](https://togithub.com/graphql-java/graphql-java/pull/3503)- adding a tracking agent by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3433](https://togithub.com/graphql-java/graphql-java/pull/3433)- Map benchmarks by [@&#8203;bbakerman](https://togithub.com/bbakerman)in[https://github.com/graphql-java/graphql-java/pull/3488](https://togithub.com/graphql-java/graphql-java/pull/3488)- A CompleteableFuture benchmark by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3492](https://togithub.com/graphql-java/graphql-java/pull/3492)- Fix printing of union types by[@&#8203;bhabegger](https://togithub.com/bhabegger) in[https://github.com/graphql-java/graphql-java/pull/3506](https://togithub.com/graphql-java/graphql-java/pull/3506)- SubscriptionUniqueRootField validation to check multiple fragments -Validation Bug fix by[@&#8203;Juliano-Prado](https://togithub.com/Juliano-Prado) in[https://github.com/graphql-java/graphql-java/pull/3481](https://togithub.com/graphql-java/graphql-java/pull/3481)- Return empty singleton DirectivesHolder if directives are empty by[@&#8203;gnawf](https://togithub.com/gnawf) in[https://github.com/graphql-java/graphql-java/pull/3518](https://togithub.com/graphql-java/graphql-java/pull/3518)- Bump org.junit.jupiter:junit-jupiter from 5.7.1 to 5.10.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3523](https://togithub.com/graphql-java/graphql-java/pull/3523)- Bump org.assertj:assertj-core from 3.25.1 to 3.25.3 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3521](https://togithub.com/graphql-java/graphql-java/pull/3521)- Bump net.bytebuddy:byte-buddy from 1.14.11 to 1.14.12 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3522](https://togithub.com/graphql-java/graphql-java/pull/3522)- Bump com.fasterxml.jackson.core:jackson-databind from 2.16.1 to 2.16.2by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3519](https://togithub.com/graphql-java/graphql-java/pull/3519)- Bump net.bytebuddy:byte-buddy-agent from 1.14.11 to 1.14.12 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3520](https://togithub.com/graphql-java/graphql-java/pull/3520)- allow for a max result nodes limit for execution by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3525](https://togithub.com/graphql-java/graphql-java/pull/3525)- This provides and ability to disable Introspection by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3526](https://togithub.com/graphql-java/graphql-java/pull/3526)- This provides GoodFaithIntrospection by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3527](https://togithub.com/graphql-java/graphql-java/pull/3527)- Bump com.fasterxml.jackson.core:jackson-databind from 2.16.2 to 2.17.0by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3534](https://togithub.com/graphql-java/graphql-java/pull/3534)- adding a cycle schema analyzer by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3533](https://togithub.com/graphql-java/graphql-java/pull/3533)- Restrict the number of ENFs created and take advantage in GoodFaithintrospection by [@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3539](https://togithub.com/graphql-java/graphql-java/pull/3539)- Interning fieldnames (from netflix) by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3504](https://togithub.com/graphql-java/graphql-java/pull/3504)- Cheaper assertions with constant strings by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3507](https://togithub.com/graphql-java/graphql-java/pull/3507)- Small tweaks to not allocate objects for lambda closures by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3508](https://togithub.com/graphql-java/graphql-java/pull/3508)- Removed the deprecated Instrumentation methods and removes ER wrappingby [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3460](https://togithub.com/graphql-java/graphql-java/pull/3460)- Removed deprecated methods in parsing by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3509](https://togithub.com/graphql-java/graphql-java/pull/3509)- Removed deprecated methods in doc providers by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3510](https://togithub.com/graphql-java/graphql-java/pull/3510)- Removed deprecated methods in ExecutionInput by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3511](https://togithub.com/graphql-java/graphql-java/pull/3511)- Removed deprecated methods in ExecutionContext by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3512](https://togithub.com/graphql-java/graphql-java/pull/3512)- Removed deprecated methods in GraphQLSchema by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3515](https://togithub.com/graphql-java/graphql-java/pull/3515)- Removed deprecated methods and SchemaGeneratorPostProcessing by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3516](https://togithub.com/graphql-java/graphql-java/pull/3516)- Removed deprecated methods in ValidationError by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3517](https://togithub.com/graphql-java/graphql-java/pull/3517)- cleanup ExecutableNormalizedOperationFactory by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3544](https://togithub.com/graphql-java/graphql-java/pull/3544)- Made the field definition lookup more optimised by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3494](https://togithub.com/graphql-java/graphql-java/pull/3494)- Removed deprecated methods in code registry by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3514](https://togithub.com/graphql-java/graphql-java/pull/3514)- Improve Good faith introspection error handling by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3546](https://togithub.com/graphql-java/graphql-java/pull/3546)- Reduce the usage of CompletableFutures in graphql-java - scalars /enums and lists by [@&#8203;bbakerman](https://togithub.com/bbakerman)in[https://github.com/graphql-java/graphql-java/pull/3480](https://togithub.com/graphql-java/graphql-java/pull/3480)- add a default max nodes count for the ExecutableNormalizedFactory by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3547](https://togithub.com/graphql-java/graphql-java/pull/3547)- Reduce the usage of CompletableFutures in graphql-java - now withobjects by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3490](https://togithub.com/graphql-java/graphql-java/pull/3490)- Bump net.bytebuddy:byte-buddy from 1.14.12 to 1.14.13 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3554](https://togithub.com/graphql-java/graphql-java/pull/3554)- Bump net.bytebuddy:byte-buddy-agent from 1.14.12 to 1.14.13 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3555](https://togithub.com/graphql-java/graphql-java/pull/3555)- Stricter parseValue coercion for String, Int, Float, Boolean by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3553](https://togithub.com/graphql-java/graphql-java/pull/3553)- require non-empty directive locations by[@&#8203;jbellenger](https://togithub.com/jbellenger) in[https://github.com/graphql-java/graphql-java/pull/3552](https://togithub.com/graphql-java/graphql-java/pull/3552)- Putting createState back into Instrumentation by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3557](https://togithub.com/graphql-java/graphql-java/pull/3557)- Bump org.testng:testng from 7.9.0 to 7.10.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3559](https://togithub.com/graphql-java/graphql-java/pull/3559)- Bump io.github.gradle-nexus.publish-plugin from 1.3.0 to 2.0.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3560](https://togithub.com/graphql-java/graphql-java/pull/3560)- fix incremental partial result builder by[@&#8203;sbarker2](https://togithub.com/sbarker2) in[https://github.com/graphql-java/graphql-java/pull/3562](https://togithub.com/graphql-java/graphql-java/pull/3562)- Dataloader 3.3.0 upgrade by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3564](https://togithub.com/graphql-java/graphql-java/pull/3564)- strictMode for RuntimeWiring and TypeRuntimeWiring by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3565](https://togithub.com/graphql-java/graphql-java/pull/3565)- Bump org.testng:testng from 7.10.0 to 7.10.1 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3566](https://togithub.com/graphql-java/graphql-java/pull/3566)- Bump gradle/wrapper-validation-action from 2 to 3 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3567](https://togithub.com/graphql-java/graphql-java/pull/3567)- validate non-nullable directive args by[@&#8203;jbellenger](https://togithub.com/jbellenger) in[https://github.com/graphql-java/graphql-java/pull/3551](https://togithub.com/graphql-java/graphql-java/pull/3551)#### New Contributors- [@&#8203;salvoilmiosi](https://togithub.com/salvoilmiosi) made theirfirst contribution in[https://github.com/graphql-java/graphql-java/pull/3364](https://togithub.com/graphql-java/graphql-java/pull/3364)- [@&#8203;Juliano-Prado](https://togithub.com/Juliano-Prado) made theirfirst contribution in[https://github.com/graphql-java/graphql-java/pull/3439](https://togithub.com/graphql-java/graphql-java/pull/3439)- [@&#8203;bhabegger](https://togithub.com/bhabegger) made their firstcontribution in[https://github.com/graphql-java/graphql-java/pull/3506](https://togithub.com/graphql-java/graphql-java/pull/3506)- [@&#8203;sbarker2](https://togithub.com/sbarker2) made their firstcontribution in[https://github.com/graphql-java/graphql-java/pull/3562](https://togithub.com/graphql-java/graphql-java/pull/3562)**Full Changelog**:graphql-java/graphql-java@v21.5...v22.0</details>---### Configuration📅 **Schedule**: Branch creation - At any time (no schedule defined),Automerge - At any time (no schedule defined).🚦 **Automerge**: Enabled.♻ **Rebasing**: Whenever PR becomes conflicted, or you tick therebase/retry checkbox.🔕 **Ignore**: Close this PR and you won't be reminded about this updateagain.---- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, checkthis box---This PR has been generated by [MendRenovate](https://www.mend.io/free-developer-tools/renovate/). Viewrepository job log[here](https://developer.mend.io/github/camunda/zeebe).<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMTMuMSIsInVwZGF0ZWRJblZlciI6IjM3LjMyMS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJhdXRvbWVyZ2UiXX0=-->
github-merge-queuebot referenced this pull request in camunda/camundaApr 25, 2024
…n) (#17781)[![MendRenovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)This PR contains the following updates:| Package | Change | Age | Adoption | Passing | Confidence ||---|---|---|---|---|---||[com.graphql-java:graphql-java](https://togithub.com/graphql-java/graphql-java)| `21.5` -> `230521-nf-execution` |[![age](https://developer.mend.io/api/mc/badges/age/maven/com.graphql-java:graphql-java/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.graphql-java:graphql-java/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.graphql-java:graphql-java/21.5/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.graphql-java:graphql-java/21.5/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|---> [!WARNING]> Some dependencies could not be looked up. Check the DependencyDashboard for more information.---### Release Notes<details><summary>graphql-java/graphql-java(com.graphql-java:graphql-java)</summary>###[`v22.0`](https://togithub.com/graphql-java/graphql-java/releases/tag/v22.0):22.0[CompareSource](https://togithub.com/graphql-java/graphql-java/compare/v21.5...v22.0)We are pleased to announce the release of graphql-java v22.0.Thanks to everyone in the community who contributed to the release,whether that was code, helping to report issues, or participating indiscussions.This is a **breaking change** release.The graphql-java team takes breaking changes very seriously but in thename of performance we have made some significant breaking changes inthis release.### Major Performance ChangesPast releases have been very much performance focused and this one is nodifferent. However, this release is aiming to reduce memory pressuremore than reduce pure CPU usage. When the graphql-java engine isrunning, if it produces less objects it will ultimately run fasterbecause of reduced memory pressure and less garbage to collect.The engine has been changed in two major ways that reduce memorypressure.#### ExecutionResult wrappingThe first was that all values that come back got wrapped internally intoa `ExecutionResult` object where the `data` attribute was the value.This was a carry over from some very early GraphQL code but wasunnecessary and hence has been removed. The follow on effect of this isthat some `graphql.execution.ExecutionStrategy` protected methods and`graphql.execution.instrumentation.Instrumentation` methods used toreceive and return `ExecutionResult` values and no longer do, which isan API breaking change. We have made this breaking changes in the nameof memory pressure performance.#### CompletableFuture wrappingThe second major change is that the engine no longer exclusively uses`java.util.concurrent.CompletableFuture`s when composing togetherresults. Let us explain the past code first so we can discuss the newcode.`CompletableFuture` is a fantastic construct because it represents apromise to a value and it can also hold an exceptional state insideitself. Async programming with `CompletableFuture` is viral. If stage 1of some compute process returns a `CompletableFuture` then stage 2 and 3and 4 are likely to as well to ensure everything is asynchronous.We use to take values that were not asynchronous (such as DataFetcherthat returned a simple in memory object) and wrap them in a`CompletableFuture` so that all of the other code composed togetherusing `CompletableFuture` methods like `.thenApply()` and `.thenCompose`and so on. The code is cleaner if you use all `CompletableFuture` codepatterns.However many objects in a GraphQL request are not asynchronous butrather materialised objects in memory. Scalars, enums and list are oftenjust values immediately available to be used and allocating a`CompletableFuture` makes the code easier to write but it has a memorypressure cost.So we have sacrificed cleaner code for more memory performant code.graphql-java engine `graphql.execution.ExecutionStrategy` methods nowjust return `Object` where that object might be either a`CompletableFuture` or a materialised value.```java    private Object /*CompletableFuture<FetchedValue> | FetchedValue>*/       fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters) {```Notice we have lost type safety here. In the past this would have onlybeen `CompletableFuture<FetchedValue>` and hence been both type safe andasync composable.Now the caller of that method has to handle the async case where itmight be a `CompletableFuture<FetchedValue>` AND the materialised valuecase where it might be a `FetchedValue` but as most simple fields inGraphQL are in fact materialised values, this is worth the less cleancode.`DataFetchers` can of course continue to return `CompletableFuture`values and they will be handled in a polymorphic manner.The upshot of all this work is that the graphql-java engine allocatedway less `CompletableFuture` values and hence reduces the amount ofmemory used.#### Instrumentation ChangesThe above changes now mean means that before`graphql.execution.instrumentation.InstrumentationContext` used to begiven a `CompletableFuture` but now no longer does```java    void onDispatched(CompletableFuture<T> result);```is now```java    void onDispatched();```if you previously used the `CompletableFuture` to know when somethingwas completed, well `InstrumentationContext` has the same semanticsbecause it's completed method is similar in that it presents a value oran exception```java    void onCompleted(T result, Throwable t);````graphql.execution.instrumentation.Instrumentation` also had a lot ofdeprecated methods in place and these have been removed since the moreperformant shape of passing in`graphql.execution.instrumentation.InstrumentationState` has been inplace for quite a few releases.Some of the methods that received `ExecutionResult` wrapped values havealso changed as mentioned above.`Instrumentation` is probably the area that needs the most attention interms of breaking changes. If you have not moved off the deprecatedmethods, your custom `Instrumentation`s will no longer compile or run.#### Interning key stringsOur friends at Netflix provided a PR that interns certain key stringslike "field names" so that we create less String instances whenprocessing field names in queries that we know must be previouslyinterned in the schema.[https://github.com/graphql-java/graphql-java/pull/3504](https://togithub.com/graphql-java/graphql-java/pull/3504)#### The full list of performance related changeshttps://github.com/graphql-java/graphql-java/pulls?q=is%3Apr+milestone%3A%2222.0%22+label%3Aperformance### Major Changes#### [@&#8203;defer](https://togithub.com/defer) Experimental SupportSupport for the `@defer` directive has been added in an experimentalfashion. While `@defer` is still not in the released GraphQLspecification, we have judged it mature enough to support at this stageand the `graphql-js` reference implementation has support for it.https://github.com/graphql/graphql-wg/blob/main/rfcs/DeferStream.mdAt this stage we have not yet supported `@stream` but this is likely tobe included in a future release.### Breaking ChangesThere are quite a few API breaking changes in this release. In factthere are 22 PRs containing breaking API changes.#### Stricter parseValue coercion: Aligning with JS referenceimplementationWe have made changes to String, Boolean, Float, and Int `parseValue`coercion, to be consistent with the reference JS implementation. The keychange is `parseValue` is now stricter on accepted inputs.- String `parseValue` now requires input of type `String`. For example,a `Number` input `123` or a `Boolean` input `true` will no longer beaccepted.- Boolean `parseValue` now requires input of type `Boolean`. Forexample, a `String` input `"true"` will no longer be accepted.- Float `parseValue` now requires input of type `Number`. For example, a`String` input `"3.14"` will no longer be accepted.- Int `parseValue` now requires input of type `Number`. For example, a`String` input `"42"` will no longer be accepted.This is a breaking change. To help you migrate, in [version21.0](https://togithub.com/graphql-java/graphql-java/releases/tag/v21.0),we introduced the InputInterceptor[https://github.com/graphql-java/graphql-java/pull/3188](https://togithub.com/graphql-java/graphql-java/pull/3188)(and an implementation LegacyCoercingInputInterceptor[https://github.com/graphql-java/graphql-java/pull/3218](https://togithub.com/graphql-java/graphql-java/pull/3218))to provide a migration pathway. You can use this interceptor to monitorand modify values.For more, see[https://github.com/graphql-java/graphql-java/pull/3553](https://togithub.com/graphql-java/graphql-java/pull/3553)JS reference implementation:https://github.com/graphql/graphql-js/blob/main/src/type/scalars.ts#### Removing deprecated methodsMany methods that have been deprecated for a long time, sometimes evenup to 6 years, have finally been removed.The `CompletableFuture` unwrapping work mentioned above changed manymethods in the `graphql.execution.ExecutionStrategy` classes but wedon't expect this affect many people since very few people write theirown engines.That `CompletableFuture` unwrapping work also had knock on effects asmentioned above on `graphql.execution.instrumentation.Instrumentation`and hence this is the **most likely** place for there to becompatibility challenges in existing code.#### DataLoaderDispatcherInstrumentation has been removed and is nowbuilt into the engineThe code to dispatch `org.dataloader.DataLoader`s used to be aninstrumentation called `DataLoadersDataLoaderDispatcherInstrumentation`and it was automatically added at runtime. This approach has beenremoved.The equivalent code is now built into the graphql-java engine itself.`DataLoader`s can now always be used without any special setup. Thisalso allows the code to be more performant in how `DataLoader`s aredispatched.#### SL4J logging has been removedPreviously, the graphql-java engine would log at DEBUG level certainerrors or when fields get fetched. This has not proven used for from asupport point to the graphql-java team and also has a compliance cost inthat user generated content (UGC) and personally identifying information(PII) could end up being logged, which may not be allowed under regimeslike European General Data Protection Regulation (GDPR).If you want to log now we suggest you invest in a `Instrumentation` thatlogs key events and you can there for log what you want and in acompliant manner of your choosing.[https://github.com/graphql-java/graphql-java/pull/3403](https://togithub.com/graphql-java/graphql-java/pull/3403)#### The full list of API breaking changeshttps://github.com/graphql-java/graphql-java/pulls?q=is%3Apr+milestone%3A%2222.0%22+label%3A%22breaking+change%22### Other changes- Optional strict mode for RuntimeWiring and TypeRuntimeWiring, to avoidaccidentally having multiple datafetchers on the same element[#&#8203;3565](https://togithub.com/graphql-java/graphql-java/issues/3565)#### What's Changed- OneOf validation not being applied to nested inputs by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3365](https://togithub.com/graphql-java/graphql-java/pull/3365)- Bump me.champeau.jmh from 0.7.1 to 0.7.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3371](https://togithub.com/graphql-java/graphql-java/pull/3371)- Dutch translations for GraphQL Java by[@&#8203;jord1e](https://togithub.com/jord1e) in[https://github.com/graphql-java/graphql-java/pull/3031](https://togithub.com/graphql-java/graphql-java/pull/3031)- Add 'compute' family of methods to GraphQLContext by[@&#8203;salvoilmiosi](https://togithub.com/salvoilmiosi) in[https://github.com/graphql-java/graphql-java/pull/3364](https://togithub.com/graphql-java/graphql-java/pull/3364)- Handle list of [@&#8203;oneOf](https://togithub.com/oneOf) inputobjects by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3370](https://togithub.com/graphql-java/graphql-java/pull/3370)- Bump com.graphql-java:java-dataloader from 3.2.1 to 3.2.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3375](https://togithub.com/graphql-java/graphql-java/pull/3375)- Bump com.fasterxml.jackson.core:jackson-databind from 2.15.3 to 2.16.0by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3376](https://togithub.com/graphql-java/graphql-java/pull/3376)- Bump org.jetbrains:annotations from 24.0.1 to 24.1.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3377](https://togithub.com/graphql-java/graphql-java/pull/3377)- Add GitHub action to manage stale PRs and issues by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3359](https://togithub.com/graphql-java/graphql-java/pull/3359)- Bump actions/setup-node from 3 to 4 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3358](https://togithub.com/graphql-java/graphql-java/pull/3358)- Bump google-github-actions/auth from 1.1.1 to 1.2.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3381](https://togithub.com/graphql-java/graphql-java/pull/3381)- Update German translations by[@&#8203;jord1e](https://togithub.com/jord1e) in[https://github.com/graphql-java/graphql-java/pull/3368](https://togithub.com/graphql-java/graphql-java/pull/3368)- Bump google-github-actions/auth from 1.2.0 to 2.0.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3389](https://togithub.com/graphql-java/graphql-java/pull/3389)- Bump actions/setup-java from 3 to 4 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3390](https://togithub.com/graphql-java/graphql-java/pull/3390)- Add tag to exempt PRs and issues from the stale bot by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3391](https://togithub.com/graphql-java/graphql-java/pull/3391)- Bump org.codehaus.groovy:groovy from 3.0.19 to 3.0.20 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3402](https://togithub.com/graphql-java/graphql-java/pull/3402)- Bump com.fasterxml.jackson.core:jackson-databind from 2.16.0 to 2.16.1by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3400](https://togithub.com/graphql-java/graphql-java/pull/3400)- Bump actions/stale from 8 to 9 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3393](https://togithub.com/graphql-java/graphql-java/pull/3393)- Bump org.testng:testng from 7.8.0 to 7.9.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3407](https://togithub.com/graphql-java/graphql-java/pull/3407)- Cleaning up ValidationError constructors by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3405](https://togithub.com/graphql-java/graphql-java/pull/3405)- Refactor ENF Factory by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3410](https://togithub.com/graphql-java/graphql-java/pull/3410)- upgrade gradle to 8.5 by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3412](https://togithub.com/graphql-java/graphql-java/pull/3412)- Java 9 [@&#8203;Deprecated](https://togithub.com/Deprecated)annotation by [@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3406](https://togithub.com/graphql-java/graphql-java/pull/3406)- Defer support on ENFs by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3395](https://togithub.com/graphql-java/graphql-java/pull/3395)- Bump google-github-actions/auth from 2.0.0 to 2.0.1 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3416](https://togithub.com/graphql-java/graphql-java/pull/3416)- 3385 - fix for the turkish eye 🧿 by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3388](https://togithub.com/graphql-java/graphql-java/pull/3388)- Update deprecated methods in scalar coercion documentation example by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3413](https://togithub.com/graphql-java/graphql-java/pull/3413)- Propagate GraphQLContext when completing fields - fix missingConditionalNodesDecision issue by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3411](https://togithub.com/graphql-java/graphql-java/pull/3411)- This removes SLF4J from the code base by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3403](https://togithub.com/graphql-java/graphql-java/pull/3403)- Check in Gradle files for Gradle 8.5 by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3419](https://togithub.com/graphql-java/graphql-java/pull/3419)- Bump google-github-actions/auth from 2.0.1 to 2.1.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3420](https://togithub.com/graphql-java/graphql-java/pull/3420)- Bump gradle/wrapper-validation-action from 1 to 2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3437](https://togithub.com/graphql-java/graphql-java/pull/3437)- Skip signing for local and upgrade to Gradle 8.6 by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3441](https://togithub.com/graphql-java/graphql-java/pull/3441)- ExecutionResult wrapping can be avoided - reduces memory allocationsand GC by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3330](https://togithub.com/graphql-java/graphql-java/pull/3330)- Bump org.eclipse.jetty:jetty-server from 11.0.15 to 11.0.20 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3445](https://togithub.com/graphql-java/graphql-java/pull/3445)- Bump google-github-actions/auth from 2.1.0 to 2.1.1 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3446](https://togithub.com/graphql-java/graphql-java/pull/3446)- Defer execution 2024 by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3421](https://togithub.com/graphql-java/graphql-java/pull/3421)- Add class hierarchy for incremental execution result by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3414](https://togithub.com/graphql-java/graphql-java/pull/3414)- ensure that instrumentations get an executionid by[@&#8203;jbellenger](https://togithub.com/jbellenger) in[https://github.com/graphql-java/graphql-java/pull/3448](https://togithub.com/graphql-java/graphql-java/pull/3448)- handle more Schema diff applied directives cases by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3451](https://togithub.com/graphql-java/graphql-java/pull/3451)- Defer execution refactoring after first merge by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3450](https://togithub.com/graphql-java/graphql-java/pull/3450)- Fix bug where deferred payloads were not using field aliases by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3449](https://togithub.com/graphql-java/graphql-java/pull/3449)- Fix invalid AST printer: add escape characters to single linedescriptions by [@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3443](https://togithub.com/graphql-java/graphql-java/pull/3443)- Fix flaky defer test by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3455](https://togithub.com/graphql-java/graphql-java/pull/3455)- Native DataLoader dispatch strategy without Instrumentation by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3447](https://togithub.com/graphql-java/graphql-java/pull/3447)- Avoid repeated Map lookups in SimpleFieldValidation by[@&#8203;kilink](https://togithub.com/kilink) in[https://github.com/graphql-java/graphql-java/pull/3461](https://togithub.com/graphql-java/graphql-java/pull/3461)- Fix oneOf bug when variables is empty by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3430](https://togithub.com/graphql-java/graphql-java/pull/3430)- Avoid Map for instrumentation state by[@&#8203;DanielThomas](https://togithub.com/DanielThomas) in[https://github.com/graphql-java/graphql-java/pull/3459](https://togithub.com/graphql-java/graphql-java/pull/3459)- Small code tweaks on recent PR by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3463](https://togithub.com/graphql-java/graphql-java/pull/3463)- Use String concatenation instead of StringBuilder by[@&#8203;kilink](https://togithub.com/kilink) in[https://github.com/graphql-java/graphql-java/pull/3464](https://togithub.com/graphql-java/graphql-java/pull/3464)- Added Async benchmark for future changes by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3467](https://togithub.com/graphql-java/graphql-java/pull/3467)- cleaning up the jhm benchmarks by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3468](https://togithub.com/graphql-java/graphql-java/pull/3468)- fixed async benchmark - it was nonsensical before by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3469](https://togithub.com/graphql-java/graphql-java/pull/3469)- andis suggestions on batch size by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3472](https://togithub.com/graphql-java/graphql-java/pull/3472)- Fix schema builder to copy extensionDefinitions by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3470](https://togithub.com/graphql-java/graphql-java/pull/3470)- Added an id generator that's more performant by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3466](https://togithub.com/graphql-java/graphql-java/pull/3466)- Bump google-github-actions/auth from 2.1.1 to 2.1.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3473](https://togithub.com/graphql-java/graphql-java/pull/3473)- Tweaked id generator name by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3474](https://togithub.com/graphql-java/graphql-java/pull/3474)- Using object instead of CF in DispatcherStrategy interface by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3479](https://togithub.com/graphql-java/graphql-java/pull/3479)- Added a more complex query benchmark by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3476](https://togithub.com/graphql-java/graphql-java/pull/3476)- Now allows the benchmark to go into profiling mode by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3485](https://togithub.com/graphql-java/graphql-java/pull/3485)- Now allows the benchmark to go into profiling mode - 2 by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3486](https://togithub.com/graphql-java/graphql-java/pull/3486)- Avoid repeated calls to getFieldDef and unnecessary immutablebuilders/collections by[@&#8203;DanielThomas](https://togithub.com/DanielThomas) in[https://github.com/graphql-java/graphql-java/pull/3478](https://togithub.com/graphql-java/graphql-java/pull/3478)- This removes the CompletableFuture signature fromInstrumentationContext by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3457](https://togithub.com/graphql-java/graphql-java/pull/3457)- Don't build a builder object and then turn it into the actual objectby [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3465](https://togithub.com/graphql-java/graphql-java/pull/3465)- directive filtering during printing by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3387](https://togithub.com/graphql-java/graphql-java/pull/3387)- Updated helper code for profiler attachment by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3491](https://togithub.com/graphql-java/graphql-java/pull/3491)- Combined benchmark runner by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3493](https://togithub.com/graphql-java/graphql-java/pull/3493)- Defer validation by[@&#8203;Juliano-Prado](https://togithub.com/Juliano-Prado) in[https://github.com/graphql-java/graphql-java/pull/3439](https://togithub.com/graphql-java/graphql-java/pull/3439)- Does not allocate a default deferred context that is thrown away ontransform by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3484](https://togithub.com/graphql-java/graphql-java/pull/3484)- Bump org.codehaus.groovy:groovy from 3.0.20 to 3.0.21 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3497](https://togithub.com/graphql-java/graphql-java/pull/3497)- Get fieldDef improvements from Netflix by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3499](https://togithub.com/graphql-java/graphql-java/pull/3499)- recreating the netflix Intern field names PR by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3503](https://togithub.com/graphql-java/graphql-java/pull/3503)- adding a tracking agent by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3433](https://togithub.com/graphql-java/graphql-java/pull/3433)- Map benchmarks by [@&#8203;bbakerman](https://togithub.com/bbakerman)in[https://github.com/graphql-java/graphql-java/pull/3488](https://togithub.com/graphql-java/graphql-java/pull/3488)- A CompleteableFuture benchmark by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3492](https://togithub.com/graphql-java/graphql-java/pull/3492)- Fix printing of union types by[@&#8203;bhabegger](https://togithub.com/bhabegger) in[https://github.com/graphql-java/graphql-java/pull/3506](https://togithub.com/graphql-java/graphql-java/pull/3506)- SubscriptionUniqueRootField validation to check multiple fragments -Validation Bug fix by[@&#8203;Juliano-Prado](https://togithub.com/Juliano-Prado) in[https://github.com/graphql-java/graphql-java/pull/3481](https://togithub.com/graphql-java/graphql-java/pull/3481)- Return empty singleton DirectivesHolder if directives are empty by[@&#8203;gnawf](https://togithub.com/gnawf) in[https://github.com/graphql-java/graphql-java/pull/3518](https://togithub.com/graphql-java/graphql-java/pull/3518)- Bump org.junit.jupiter:junit-jupiter from 5.7.1 to 5.10.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3523](https://togithub.com/graphql-java/graphql-java/pull/3523)- Bump org.assertj:assertj-core from 3.25.1 to 3.25.3 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3521](https://togithub.com/graphql-java/graphql-java/pull/3521)- Bump net.bytebuddy:byte-buddy from 1.14.11 to 1.14.12 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3522](https://togithub.com/graphql-java/graphql-java/pull/3522)- Bump com.fasterxml.jackson.core:jackson-databind from 2.16.1 to 2.16.2by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3519](https://togithub.com/graphql-java/graphql-java/pull/3519)- Bump net.bytebuddy:byte-buddy-agent from 1.14.11 to 1.14.12 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3520](https://togithub.com/graphql-java/graphql-java/pull/3520)- allow for a max result nodes limit for execution by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3525](https://togithub.com/graphql-java/graphql-java/pull/3525)- This provides and ability to disable Introspection by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3526](https://togithub.com/graphql-java/graphql-java/pull/3526)- This provides GoodFaithIntrospection by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3527](https://togithub.com/graphql-java/graphql-java/pull/3527)- Bump com.fasterxml.jackson.core:jackson-databind from 2.16.2 to 2.17.0by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3534](https://togithub.com/graphql-java/graphql-java/pull/3534)- adding a cycle schema analyzer by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3533](https://togithub.com/graphql-java/graphql-java/pull/3533)- Restrict the number of ENFs created and take advantage in GoodFaithintrospection by [@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3539](https://togithub.com/graphql-java/graphql-java/pull/3539)- Interning fieldnames (from netflix) by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3504](https://togithub.com/graphql-java/graphql-java/pull/3504)- Cheaper assertions with constant strings by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3507](https://togithub.com/graphql-java/graphql-java/pull/3507)- Small tweaks to not allocate objects for lambda closures by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3508](https://togithub.com/graphql-java/graphql-java/pull/3508)- Removed the deprecated Instrumentation methods and removes ER wrappingby [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3460](https://togithub.com/graphql-java/graphql-java/pull/3460)- Removed deprecated methods in parsing by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3509](https://togithub.com/graphql-java/graphql-java/pull/3509)- Removed deprecated methods in doc providers by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3510](https://togithub.com/graphql-java/graphql-java/pull/3510)- Removed deprecated methods in ExecutionInput by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3511](https://togithub.com/graphql-java/graphql-java/pull/3511)- Removed deprecated methods in ExecutionContext by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3512](https://togithub.com/graphql-java/graphql-java/pull/3512)- Removed deprecated methods in GraphQLSchema by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3515](https://togithub.com/graphql-java/graphql-java/pull/3515)- Removed deprecated methods and SchemaGeneratorPostProcessing by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3516](https://togithub.com/graphql-java/graphql-java/pull/3516)- Removed deprecated methods in ValidationError by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3517](https://togithub.com/graphql-java/graphql-java/pull/3517)- cleanup ExecutableNormalizedOperationFactory by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3544](https://togithub.com/graphql-java/graphql-java/pull/3544)- Made the field definition lookup more optimised by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3494](https://togithub.com/graphql-java/graphql-java/pull/3494)- Removed deprecated methods in code registry by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3514](https://togithub.com/graphql-java/graphql-java/pull/3514)- Improve Good faith introspection error handling by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3546](https://togithub.com/graphql-java/graphql-java/pull/3546)- Reduce the usage of CompletableFutures in graphql-java - scalars /enums and lists by [@&#8203;bbakerman](https://togithub.com/bbakerman)in[https://github.com/graphql-java/graphql-java/pull/3480](https://togithub.com/graphql-java/graphql-java/pull/3480)- add a default max nodes count for the ExecutableNormalizedFactory by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3547](https://togithub.com/graphql-java/graphql-java/pull/3547)- Reduce the usage of CompletableFutures in graphql-java - now withobjects by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3490](https://togithub.com/graphql-java/graphql-java/pull/3490)- Bump net.bytebuddy:byte-buddy from 1.14.12 to 1.14.13 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3554](https://togithub.com/graphql-java/graphql-java/pull/3554)- Bump net.bytebuddy:byte-buddy-agent from 1.14.12 to 1.14.13 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3555](https://togithub.com/graphql-java/graphql-java/pull/3555)- Stricter parseValue coercion for String, Int, Float, Boolean by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3553](https://togithub.com/graphql-java/graphql-java/pull/3553)- require non-empty directive locations by[@&#8203;jbellenger](https://togithub.com/jbellenger) in[https://github.com/graphql-java/graphql-java/pull/3552](https://togithub.com/graphql-java/graphql-java/pull/3552)- Putting createState back into Instrumentation by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3557](https://togithub.com/graphql-java/graphql-java/pull/3557)- Bump org.testng:testng from 7.9.0 to 7.10.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3559](https://togithub.com/graphql-java/graphql-java/pull/3559)- Bump io.github.gradle-nexus.publish-plugin from 1.3.0 to 2.0.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3560](https://togithub.com/graphql-java/graphql-java/pull/3560)- fix incremental partial result builder by[@&#8203;sbarker2](https://togithub.com/sbarker2) in[https://github.com/graphql-java/graphql-java/pull/3562](https://togithub.com/graphql-java/graphql-java/pull/3562)- Dataloader 3.3.0 upgrade by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3564](https://togithub.com/graphql-java/graphql-java/pull/3564)- strictMode for RuntimeWiring and TypeRuntimeWiring by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3565](https://togithub.com/graphql-java/graphql-java/pull/3565)- Bump org.testng:testng from 7.10.0 to 7.10.1 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3566](https://togithub.com/graphql-java/graphql-java/pull/3566)- Bump gradle/wrapper-validation-action from 2 to 3 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3567](https://togithub.com/graphql-java/graphql-java/pull/3567)- validate non-nullable directive args by[@&#8203;jbellenger](https://togithub.com/jbellenger) in[https://github.com/graphql-java/graphql-java/pull/3551](https://togithub.com/graphql-java/graphql-java/pull/3551)#### New Contributors- [@&#8203;salvoilmiosi](https://togithub.com/salvoilmiosi) made theirfirst contribution in[https://github.com/graphql-java/graphql-java/pull/3364](https://togithub.com/graphql-java/graphql-java/pull/3364)- [@&#8203;Juliano-Prado](https://togithub.com/Juliano-Prado) made theirfirst contribution in[https://github.com/graphql-java/graphql-java/pull/3439](https://togithub.com/graphql-java/graphql-java/pull/3439)- [@&#8203;bhabegger](https://togithub.com/bhabegger) made their firstcontribution in[https://github.com/graphql-java/graphql-java/pull/3506](https://togithub.com/graphql-java/graphql-java/pull/3506)- [@&#8203;sbarker2](https://togithub.com/sbarker2) made their firstcontribution in[https://github.com/graphql-java/graphql-java/pull/3562](https://togithub.com/graphql-java/graphql-java/pull/3562)**Full Changelog**:graphql-java/graphql-java@v21.5...v22.0</details>---### Configuration📅 **Schedule**: Branch creation - At any time (no schedule defined),Automerge - At any time (no schedule defined).🚦 **Automerge**: Enabled.♻ **Rebasing**: Whenever PR becomes conflicted, or you tick therebase/retry checkbox.🔕 **Ignore**: Close this PR and you won't be reminded about this updateagain.---- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, checkthis box---This PR has been generated by [MendRenovate](https://www.mend.io/free-developer-tools/renovate/). Viewrepository job log[here](https://developer.mend.io/github/camunda/zeebe).<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMTMuMSIsInVwZGF0ZWRJblZlciI6IjM3LjMyMS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJhdXRvbWVyZ2UiXX0=-->
github-merge-queuebot referenced this pull request in camunda/camundaApr 25, 2024
…n) (#17781)[![MendRenovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)This PR contains the following updates:| Package | Change | Age | Adoption | Passing | Confidence ||---|---|---|---|---|---||[com.graphql-java:graphql-java](https://togithub.com/graphql-java/graphql-java)| `21.5` -> `230521-nf-execution` |[![age](https://developer.mend.io/api/mc/badges/age/maven/com.graphql-java:graphql-java/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.graphql-java:graphql-java/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.graphql-java:graphql-java/21.5/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.graphql-java:graphql-java/21.5/230521-nf-execution?slim=true)](https://docs.renovatebot.com/merge-confidence/)|---> [!WARNING]> Some dependencies could not be looked up. Check the DependencyDashboard for more information.---### Release Notes<details><summary>graphql-java/graphql-java(com.graphql-java:graphql-java)</summary>###[`v22.0`](https://togithub.com/graphql-java/graphql-java/releases/tag/v22.0):22.0[CompareSource](https://togithub.com/graphql-java/graphql-java/compare/v21.5...v22.0)We are pleased to announce the release of graphql-java v22.0.Thanks to everyone in the community who contributed to the release,whether that was code, helping to report issues, or participating indiscussions.This is a **breaking change** release.The graphql-java team takes breaking changes very seriously but in thename of performance we have made some significant breaking changes inthis release.### Major Performance ChangesPast releases have been very much performance focused and this one is nodifferent. However, this release is aiming to reduce memory pressuremore than reduce pure CPU usage. When the graphql-java engine isrunning, if it produces less objects it will ultimately run fasterbecause of reduced memory pressure and less garbage to collect.The engine has been changed in two major ways that reduce memorypressure.#### ExecutionResult wrappingThe first was that all values that come back got wrapped internally intoa `ExecutionResult` object where the `data` attribute was the value.This was a carry over from some very early GraphQL code but wasunnecessary and hence has been removed. The follow on effect of this isthat some `graphql.execution.ExecutionStrategy` protected methods and`graphql.execution.instrumentation.Instrumentation` methods used toreceive and return `ExecutionResult` values and no longer do, which isan API breaking change. We have made this breaking changes in the nameof memory pressure performance.#### CompletableFuture wrappingThe second major change is that the engine no longer exclusively uses`java.util.concurrent.CompletableFuture`s when composing togetherresults. Let us explain the past code first so we can discuss the newcode.`CompletableFuture` is a fantastic construct because it represents apromise to a value and it can also hold an exceptional state insideitself. Async programming with `CompletableFuture` is viral. If stage 1of some compute process returns a `CompletableFuture` then stage 2 and 3and 4 are likely to as well to ensure everything is asynchronous.We use to take values that were not asynchronous (such as DataFetcherthat returned a simple in memory object) and wrap them in a`CompletableFuture` so that all of the other code composed togetherusing `CompletableFuture` methods like `.thenApply()` and `.thenCompose`and so on. The code is cleaner if you use all `CompletableFuture` codepatterns.However many objects in a GraphQL request are not asynchronous butrather materialised objects in memory. Scalars, enums and list are oftenjust values immediately available to be used and allocating a`CompletableFuture` makes the code easier to write but it has a memorypressure cost.So we have sacrificed cleaner code for more memory performant code.graphql-java engine `graphql.execution.ExecutionStrategy` methods nowjust return `Object` where that object might be either a`CompletableFuture` or a materialised value.```java    private Object /*CompletableFuture<FetchedValue> | FetchedValue>*/       fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters) {```Notice we have lost type safety here. In the past this would have onlybeen `CompletableFuture<FetchedValue>` and hence been both type safe andasync composable.Now the caller of that method has to handle the async case where itmight be a `CompletableFuture<FetchedValue>` AND the materialised valuecase where it might be a `FetchedValue` but as most simple fields inGraphQL are in fact materialised values, this is worth the less cleancode.`DataFetchers` can of course continue to return `CompletableFuture`values and they will be handled in a polymorphic manner.The upshot of all this work is that the graphql-java engine allocatedway less `CompletableFuture` values and hence reduces the amount ofmemory used.#### Instrumentation ChangesThe above changes now mean means that before`graphql.execution.instrumentation.InstrumentationContext` used to begiven a `CompletableFuture` but now no longer does```java    void onDispatched(CompletableFuture<T> result);```is now```java    void onDispatched();```if you previously used the `CompletableFuture` to know when somethingwas completed, well `InstrumentationContext` has the same semanticsbecause it's completed method is similar in that it presents a value oran exception```java    void onCompleted(T result, Throwable t);````graphql.execution.instrumentation.Instrumentation` also had a lot ofdeprecated methods in place and these have been removed since the moreperformant shape of passing in`graphql.execution.instrumentation.InstrumentationState` has been inplace for quite a few releases.Some of the methods that received `ExecutionResult` wrapped values havealso changed as mentioned above.`Instrumentation` is probably the area that needs the most attention interms of breaking changes. If you have not moved off the deprecatedmethods, your custom `Instrumentation`s will no longer compile or run.#### Interning key stringsOur friends at Netflix provided a PR that interns certain key stringslike "field names" so that we create less String instances whenprocessing field names in queries that we know must be previouslyinterned in the schema.[https://github.com/graphql-java/graphql-java/pull/3504](https://togithub.com/graphql-java/graphql-java/pull/3504)#### The full list of performance related changeshttps://github.com/graphql-java/graphql-java/pulls?q=is%3Apr+milestone%3A%2222.0%22+label%3Aperformance### Major Changes#### [@&#8203;defer](https://togithub.com/defer) Experimental SupportSupport for the `@defer` directive has been added in an experimentalfashion. While `@defer` is still not in the released GraphQLspecification, we have judged it mature enough to support at this stageand the `graphql-js` reference implementation has support for it.https://github.com/graphql/graphql-wg/blob/main/rfcs/DeferStream.mdAt this stage we have not yet supported `@stream` but this is likely tobe included in a future release.### Breaking ChangesThere are quite a few API breaking changes in this release. In factthere are 22 PRs containing breaking API changes.#### Stricter parseValue coercion: Aligning with JS referenceimplementationWe have made changes to String, Boolean, Float, and Int `parseValue`coercion, to be consistent with the reference JS implementation. The keychange is `parseValue` is now stricter on accepted inputs.- String `parseValue` now requires input of type `String`. For example,a `Number` input `123` or a `Boolean` input `true` will no longer beaccepted.- Boolean `parseValue` now requires input of type `Boolean`. Forexample, a `String` input `"true"` will no longer be accepted.- Float `parseValue` now requires input of type `Number`. For example, a`String` input `"3.14"` will no longer be accepted.- Int `parseValue` now requires input of type `Number`. For example, a`String` input `"42"` will no longer be accepted.This is a breaking change. To help you migrate, in [version21.0](https://togithub.com/graphql-java/graphql-java/releases/tag/v21.0),we introduced the InputInterceptor[https://github.com/graphql-java/graphql-java/pull/3188](https://togithub.com/graphql-java/graphql-java/pull/3188)(and an implementation LegacyCoercingInputInterceptor[https://github.com/graphql-java/graphql-java/pull/3218](https://togithub.com/graphql-java/graphql-java/pull/3218))to provide a migration pathway. You can use this interceptor to monitorand modify values.For more, see[https://github.com/graphql-java/graphql-java/pull/3553](https://togithub.com/graphql-java/graphql-java/pull/3553)JS reference implementation:https://github.com/graphql/graphql-js/blob/main/src/type/scalars.ts#### Removing deprecated methodsMany methods that have been deprecated for a long time, sometimes evenup to 6 years, have finally been removed.The `CompletableFuture` unwrapping work mentioned above changed manymethods in the `graphql.execution.ExecutionStrategy` classes but wedon't expect this affect many people since very few people write theirown engines.That `CompletableFuture` unwrapping work also had knock on effects asmentioned above on `graphql.execution.instrumentation.Instrumentation`and hence this is the **most likely** place for there to becompatibility challenges in existing code.#### DataLoaderDispatcherInstrumentation has been removed and is nowbuilt into the engineThe code to dispatch `org.dataloader.DataLoader`s used to be aninstrumentation called `DataLoadersDataLoaderDispatcherInstrumentation`and it was automatically added at runtime. This approach has beenremoved.The equivalent code is now built into the graphql-java engine itself.`DataLoader`s can now always be used without any special setup. Thisalso allows the code to be more performant in how `DataLoader`s aredispatched.#### SL4J logging has been removedPreviously, the graphql-java engine would log at DEBUG level certainerrors or when fields get fetched. This has not proven used for from asupport point to the graphql-java team and also has a compliance cost inthat user generated content (UGC) and personally identifying information(PII) could end up being logged, which may not be allowed under regimeslike European General Data Protection Regulation (GDPR).If you want to log now we suggest you invest in a `Instrumentation` thatlogs key events and you can there for log what you want and in acompliant manner of your choosing.[https://github.com/graphql-java/graphql-java/pull/3403](https://togithub.com/graphql-java/graphql-java/pull/3403)#### The full list of API breaking changeshttps://github.com/graphql-java/graphql-java/pulls?q=is%3Apr+milestone%3A%2222.0%22+label%3A%22breaking+change%22### Other changes- Optional strict mode for RuntimeWiring and TypeRuntimeWiring, to avoidaccidentally having multiple datafetchers on the same element[#&#8203;3565](https://togithub.com/graphql-java/graphql-java/issues/3565)#### What's Changed- OneOf validation not being applied to nested inputs by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3365](https://togithub.com/graphql-java/graphql-java/pull/3365)- Bump me.champeau.jmh from 0.7.1 to 0.7.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3371](https://togithub.com/graphql-java/graphql-java/pull/3371)- Dutch translations for GraphQL Java by[@&#8203;jord1e](https://togithub.com/jord1e) in[https://github.com/graphql-java/graphql-java/pull/3031](https://togithub.com/graphql-java/graphql-java/pull/3031)- Add 'compute' family of methods to GraphQLContext by[@&#8203;salvoilmiosi](https://togithub.com/salvoilmiosi) in[https://github.com/graphql-java/graphql-java/pull/3364](https://togithub.com/graphql-java/graphql-java/pull/3364)- Handle list of [@&#8203;oneOf](https://togithub.com/oneOf) inputobjects by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3370](https://togithub.com/graphql-java/graphql-java/pull/3370)- Bump com.graphql-java:java-dataloader from 3.2.1 to 3.2.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3375](https://togithub.com/graphql-java/graphql-java/pull/3375)- Bump com.fasterxml.jackson.core:jackson-databind from 2.15.3 to 2.16.0by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3376](https://togithub.com/graphql-java/graphql-java/pull/3376)- Bump org.jetbrains:annotations from 24.0.1 to 24.1.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3377](https://togithub.com/graphql-java/graphql-java/pull/3377)- Add GitHub action to manage stale PRs and issues by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3359](https://togithub.com/graphql-java/graphql-java/pull/3359)- Bump actions/setup-node from 3 to 4 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3358](https://togithub.com/graphql-java/graphql-java/pull/3358)- Bump google-github-actions/auth from 1.1.1 to 1.2.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3381](https://togithub.com/graphql-java/graphql-java/pull/3381)- Update German translations by[@&#8203;jord1e](https://togithub.com/jord1e) in[https://github.com/graphql-java/graphql-java/pull/3368](https://togithub.com/graphql-java/graphql-java/pull/3368)- Bump google-github-actions/auth from 1.2.0 to 2.0.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3389](https://togithub.com/graphql-java/graphql-java/pull/3389)- Bump actions/setup-java from 3 to 4 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3390](https://togithub.com/graphql-java/graphql-java/pull/3390)- Add tag to exempt PRs and issues from the stale bot by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3391](https://togithub.com/graphql-java/graphql-java/pull/3391)- Bump org.codehaus.groovy:groovy from 3.0.19 to 3.0.20 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3402](https://togithub.com/graphql-java/graphql-java/pull/3402)- Bump com.fasterxml.jackson.core:jackson-databind from 2.16.0 to 2.16.1by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3400](https://togithub.com/graphql-java/graphql-java/pull/3400)- Bump actions/stale from 8 to 9 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3393](https://togithub.com/graphql-java/graphql-java/pull/3393)- Bump org.testng:testng from 7.8.0 to 7.9.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3407](https://togithub.com/graphql-java/graphql-java/pull/3407)- Cleaning up ValidationError constructors by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3405](https://togithub.com/graphql-java/graphql-java/pull/3405)- Refactor ENF Factory by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3410](https://togithub.com/graphql-java/graphql-java/pull/3410)- upgrade gradle to 8.5 by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3412](https://togithub.com/graphql-java/graphql-java/pull/3412)- Java 9 [@&#8203;Deprecated](https://togithub.com/Deprecated)annotation by [@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3406](https://togithub.com/graphql-java/graphql-java/pull/3406)- Defer support on ENFs by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3395](https://togithub.com/graphql-java/graphql-java/pull/3395)- Bump google-github-actions/auth from 2.0.0 to 2.0.1 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3416](https://togithub.com/graphql-java/graphql-java/pull/3416)- 3385 - fix for the turkish eye 🧿 by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3388](https://togithub.com/graphql-java/graphql-java/pull/3388)- Update deprecated methods in scalar coercion documentation example by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3413](https://togithub.com/graphql-java/graphql-java/pull/3413)- Propagate GraphQLContext when completing fields - fix missingConditionalNodesDecision issue by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3411](https://togithub.com/graphql-java/graphql-java/pull/3411)- This removes SLF4J from the code base by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3403](https://togithub.com/graphql-java/graphql-java/pull/3403)- Check in Gradle files for Gradle 8.5 by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3419](https://togithub.com/graphql-java/graphql-java/pull/3419)- Bump google-github-actions/auth from 2.0.1 to 2.1.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3420](https://togithub.com/graphql-java/graphql-java/pull/3420)- Bump gradle/wrapper-validation-action from 1 to 2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3437](https://togithub.com/graphql-java/graphql-java/pull/3437)- Skip signing for local and upgrade to Gradle 8.6 by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3441](https://togithub.com/graphql-java/graphql-java/pull/3441)- ExecutionResult wrapping can be avoided - reduces memory allocationsand GC by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3330](https://togithub.com/graphql-java/graphql-java/pull/3330)- Bump org.eclipse.jetty:jetty-server from 11.0.15 to 11.0.20 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3445](https://togithub.com/graphql-java/graphql-java/pull/3445)- Bump google-github-actions/auth from 2.1.0 to 2.1.1 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3446](https://togithub.com/graphql-java/graphql-java/pull/3446)- Defer execution 2024 by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3421](https://togithub.com/graphql-java/graphql-java/pull/3421)- Add class hierarchy for incremental execution result by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3414](https://togithub.com/graphql-java/graphql-java/pull/3414)- ensure that instrumentations get an executionid by[@&#8203;jbellenger](https://togithub.com/jbellenger) in[https://github.com/graphql-java/graphql-java/pull/3448](https://togithub.com/graphql-java/graphql-java/pull/3448)- handle more Schema diff applied directives cases by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3451](https://togithub.com/graphql-java/graphql-java/pull/3451)- Defer execution refactoring after first merge by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3450](https://togithub.com/graphql-java/graphql-java/pull/3450)- Fix bug where deferred payloads were not using field aliases by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3449](https://togithub.com/graphql-java/graphql-java/pull/3449)- Fix invalid AST printer: add escape characters to single linedescriptions by [@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3443](https://togithub.com/graphql-java/graphql-java/pull/3443)- Fix flaky defer test by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3455](https://togithub.com/graphql-java/graphql-java/pull/3455)- Native DataLoader dispatch strategy without Instrumentation by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3447](https://togithub.com/graphql-java/graphql-java/pull/3447)- Avoid repeated Map lookups in SimpleFieldValidation by[@&#8203;kilink](https://togithub.com/kilink) in[https://github.com/graphql-java/graphql-java/pull/3461](https://togithub.com/graphql-java/graphql-java/pull/3461)- Fix oneOf bug when variables is empty by[@&#8203;felipe-gdr](https://togithub.com/felipe-gdr) in[https://github.com/graphql-java/graphql-java/pull/3430](https://togithub.com/graphql-java/graphql-java/pull/3430)- Avoid Map for instrumentation state by[@&#8203;DanielThomas](https://togithub.com/DanielThomas) in[https://github.com/graphql-java/graphql-java/pull/3459](https://togithub.com/graphql-java/graphql-java/pull/3459)- Small code tweaks on recent PR by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3463](https://togithub.com/graphql-java/graphql-java/pull/3463)- Use String concatenation instead of StringBuilder by[@&#8203;kilink](https://togithub.com/kilink) in[https://github.com/graphql-java/graphql-java/pull/3464](https://togithub.com/graphql-java/graphql-java/pull/3464)- Added Async benchmark for future changes by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3467](https://togithub.com/graphql-java/graphql-java/pull/3467)- cleaning up the jhm benchmarks by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3468](https://togithub.com/graphql-java/graphql-java/pull/3468)- fixed async benchmark - it was nonsensical before by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3469](https://togithub.com/graphql-java/graphql-java/pull/3469)- andis suggestions on batch size by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3472](https://togithub.com/graphql-java/graphql-java/pull/3472)- Fix schema builder to copy extensionDefinitions by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3470](https://togithub.com/graphql-java/graphql-java/pull/3470)- Added an id generator that's more performant by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3466](https://togithub.com/graphql-java/graphql-java/pull/3466)- Bump google-github-actions/auth from 2.1.1 to 2.1.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3473](https://togithub.com/graphql-java/graphql-java/pull/3473)- Tweaked id generator name by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3474](https://togithub.com/graphql-java/graphql-java/pull/3474)- Using object instead of CF in DispatcherStrategy interface by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3479](https://togithub.com/graphql-java/graphql-java/pull/3479)- Added a more complex query benchmark by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3476](https://togithub.com/graphql-java/graphql-java/pull/3476)- Now allows the benchmark to go into profiling mode by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3485](https://togithub.com/graphql-java/graphql-java/pull/3485)- Now allows the benchmark to go into profiling mode - 2 by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3486](https://togithub.com/graphql-java/graphql-java/pull/3486)- Avoid repeated calls to getFieldDef and unnecessary immutablebuilders/collections by[@&#8203;DanielThomas](https://togithub.com/DanielThomas) in[https://github.com/graphql-java/graphql-java/pull/3478](https://togithub.com/graphql-java/graphql-java/pull/3478)- This removes the CompletableFuture signature fromInstrumentationContext by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3457](https://togithub.com/graphql-java/graphql-java/pull/3457)- Don't build a builder object and then turn it into the actual objectby [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3465](https://togithub.com/graphql-java/graphql-java/pull/3465)- directive filtering during printing by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3387](https://togithub.com/graphql-java/graphql-java/pull/3387)- Updated helper code for profiler attachment by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3491](https://togithub.com/graphql-java/graphql-java/pull/3491)- Combined benchmark runner by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3493](https://togithub.com/graphql-java/graphql-java/pull/3493)- Defer validation by[@&#8203;Juliano-Prado](https://togithub.com/Juliano-Prado) in[https://github.com/graphql-java/graphql-java/pull/3439](https://togithub.com/graphql-java/graphql-java/pull/3439)- Does not allocate a default deferred context that is thrown away ontransform by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3484](https://togithub.com/graphql-java/graphql-java/pull/3484)- Bump org.codehaus.groovy:groovy from 3.0.20 to 3.0.21 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3497](https://togithub.com/graphql-java/graphql-java/pull/3497)- Get fieldDef improvements from Netflix by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3499](https://togithub.com/graphql-java/graphql-java/pull/3499)- recreating the netflix Intern field names PR by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3503](https://togithub.com/graphql-java/graphql-java/pull/3503)- adding a tracking agent by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3433](https://togithub.com/graphql-java/graphql-java/pull/3433)- Map benchmarks by [@&#8203;bbakerman](https://togithub.com/bbakerman)in[https://github.com/graphql-java/graphql-java/pull/3488](https://togithub.com/graphql-java/graphql-java/pull/3488)- A CompleteableFuture benchmark by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3492](https://togithub.com/graphql-java/graphql-java/pull/3492)- Fix printing of union types by[@&#8203;bhabegger](https://togithub.com/bhabegger) in[https://github.com/graphql-java/graphql-java/pull/3506](https://togithub.com/graphql-java/graphql-java/pull/3506)- SubscriptionUniqueRootField validation to check multiple fragments -Validation Bug fix by[@&#8203;Juliano-Prado](https://togithub.com/Juliano-Prado) in[https://github.com/graphql-java/graphql-java/pull/3481](https://togithub.com/graphql-java/graphql-java/pull/3481)- Return empty singleton DirectivesHolder if directives are empty by[@&#8203;gnawf](https://togithub.com/gnawf) in[https://github.com/graphql-java/graphql-java/pull/3518](https://togithub.com/graphql-java/graphql-java/pull/3518)- Bump org.junit.jupiter:junit-jupiter from 5.7.1 to 5.10.2 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3523](https://togithub.com/graphql-java/graphql-java/pull/3523)- Bump org.assertj:assertj-core from 3.25.1 to 3.25.3 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3521](https://togithub.com/graphql-java/graphql-java/pull/3521)- Bump net.bytebuddy:byte-buddy from 1.14.11 to 1.14.12 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3522](https://togithub.com/graphql-java/graphql-java/pull/3522)- Bump com.fasterxml.jackson.core:jackson-databind from 2.16.1 to 2.16.2by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3519](https://togithub.com/graphql-java/graphql-java/pull/3519)- Bump net.bytebuddy:byte-buddy-agent from 1.14.11 to 1.14.12 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3520](https://togithub.com/graphql-java/graphql-java/pull/3520)- allow for a max result nodes limit for execution by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3525](https://togithub.com/graphql-java/graphql-java/pull/3525)- This provides and ability to disable Introspection by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3526](https://togithub.com/graphql-java/graphql-java/pull/3526)- This provides GoodFaithIntrospection by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3527](https://togithub.com/graphql-java/graphql-java/pull/3527)- Bump com.fasterxml.jackson.core:jackson-databind from 2.16.2 to 2.17.0by [@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3534](https://togithub.com/graphql-java/graphql-java/pull/3534)- adding a cycle schema analyzer by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3533](https://togithub.com/graphql-java/graphql-java/pull/3533)- Restrict the number of ENFs created and take advantage in GoodFaithintrospection by [@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3539](https://togithub.com/graphql-java/graphql-java/pull/3539)- Interning fieldnames (from netflix) by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3504](https://togithub.com/graphql-java/graphql-java/pull/3504)- Cheaper assertions with constant strings by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3507](https://togithub.com/graphql-java/graphql-java/pull/3507)- Small tweaks to not allocate objects for lambda closures by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3508](https://togithub.com/graphql-java/graphql-java/pull/3508)- Removed the deprecated Instrumentation methods and removes ER wrappingby [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3460](https://togithub.com/graphql-java/graphql-java/pull/3460)- Removed deprecated methods in parsing by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3509](https://togithub.com/graphql-java/graphql-java/pull/3509)- Removed deprecated methods in doc providers by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3510](https://togithub.com/graphql-java/graphql-java/pull/3510)- Removed deprecated methods in ExecutionInput by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3511](https://togithub.com/graphql-java/graphql-java/pull/3511)- Removed deprecated methods in ExecutionContext by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3512](https://togithub.com/graphql-java/graphql-java/pull/3512)- Removed deprecated methods in GraphQLSchema by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3515](https://togithub.com/graphql-java/graphql-java/pull/3515)- Removed deprecated methods and SchemaGeneratorPostProcessing by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3516](https://togithub.com/graphql-java/graphql-java/pull/3516)- Removed deprecated methods in ValidationError by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3517](https://togithub.com/graphql-java/graphql-java/pull/3517)- cleanup ExecutableNormalizedOperationFactory by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3544](https://togithub.com/graphql-java/graphql-java/pull/3544)- Made the field definition lookup more optimised by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3494](https://togithub.com/graphql-java/graphql-java/pull/3494)- Removed deprecated methods in code registry by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3514](https://togithub.com/graphql-java/graphql-java/pull/3514)- Improve Good faith introspection error handling by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3546](https://togithub.com/graphql-java/graphql-java/pull/3546)- Reduce the usage of CompletableFutures in graphql-java - scalars /enums and lists by [@&#8203;bbakerman](https://togithub.com/bbakerman)in[https://github.com/graphql-java/graphql-java/pull/3480](https://togithub.com/graphql-java/graphql-java/pull/3480)- add a default max nodes count for the ExecutableNormalizedFactory by[@&#8203;andimarek](https://togithub.com/andimarek) in[https://github.com/graphql-java/graphql-java/pull/3547](https://togithub.com/graphql-java/graphql-java/pull/3547)- Reduce the usage of CompletableFutures in graphql-java - now withobjects by [@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3490](https://togithub.com/graphql-java/graphql-java/pull/3490)- Bump net.bytebuddy:byte-buddy from 1.14.12 to 1.14.13 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3554](https://togithub.com/graphql-java/graphql-java/pull/3554)- Bump net.bytebuddy:byte-buddy-agent from 1.14.12 to 1.14.13 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3555](https://togithub.com/graphql-java/graphql-java/pull/3555)- Stricter parseValue coercion for String, Int, Float, Boolean by[@&#8203;dondonz](https://togithub.com/dondonz) in[https://github.com/graphql-java/graphql-java/pull/3553](https://togithub.com/graphql-java/graphql-java/pull/3553)- require non-empty directive locations by[@&#8203;jbellenger](https://togithub.com/jbellenger) in[https://github.com/graphql-java/graphql-java/pull/3552](https://togithub.com/graphql-java/graphql-java/pull/3552)- Putting createState back into Instrumentation by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3557](https://togithub.com/graphql-java/graphql-java/pull/3557)- Bump org.testng:testng from 7.9.0 to 7.10.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3559](https://togithub.com/graphql-java/graphql-java/pull/3559)- Bump io.github.gradle-nexus.publish-plugin from 1.3.0 to 2.0.0 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3560](https://togithub.com/graphql-java/graphql-java/pull/3560)- fix incremental partial result builder by[@&#8203;sbarker2](https://togithub.com/sbarker2) in[https://github.com/graphql-java/graphql-java/pull/3562](https://togithub.com/graphql-java/graphql-java/pull/3562)- Dataloader 3.3.0 upgrade by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3564](https://togithub.com/graphql-java/graphql-java/pull/3564)- strictMode for RuntimeWiring and TypeRuntimeWiring by[@&#8203;bbakerman](https://togithub.com/bbakerman) in[https://github.com/graphql-java/graphql-java/pull/3565](https://togithub.com/graphql-java/graphql-java/pull/3565)- Bump org.testng:testng from 7.10.0 to 7.10.1 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3566](https://togithub.com/graphql-java/graphql-java/pull/3566)- Bump gradle/wrapper-validation-action from 2 to 3 by[@&#8203;dependabot](https://togithub.com/dependabot) in[https://github.com/graphql-java/graphql-java/pull/3567](https://togithub.com/graphql-java/graphql-java/pull/3567)- validate non-nullable directive args by[@&#8203;jbellenger](https://togithub.com/jbellenger) in[https://github.com/graphql-java/graphql-java/pull/3551](https://togithub.com/graphql-java/graphql-java/pull/3551)#### New Contributors- [@&#8203;salvoilmiosi](https://togithub.com/salvoilmiosi) made theirfirst contribution in[https://github.com/graphql-java/graphql-java/pull/3364](https://togithub.com/graphql-java/graphql-java/pull/3364)- [@&#8203;Juliano-Prado](https://togithub.com/Juliano-Prado) made theirfirst contribution in[https://github.com/graphql-java/graphql-java/pull/3439](https://togithub.com/graphql-java/graphql-java/pull/3439)- [@&#8203;bhabegger](https://togithub.com/bhabegger) made their firstcontribution in[https://github.com/graphql-java/graphql-java/pull/3506](https://togithub.com/graphql-java/graphql-java/pull/3506)- [@&#8203;sbarker2](https://togithub.com/sbarker2) made their firstcontribution in[https://github.com/graphql-java/graphql-java/pull/3562](https://togithub.com/graphql-java/graphql-java/pull/3562)**Full Changelog**:graphql-java/graphql-java@v21.5...v22.0</details>---### Configuration📅 **Schedule**: Branch creation - At any time (no schedule defined),Automerge - At any time (no schedule defined).🚦 **Automerge**: Enabled.♻ **Rebasing**: Whenever PR becomes conflicted, or you tick therebase/retry checkbox.🔕 **Ignore**: Close this PR and you won't be reminded about this updateagain.---- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, checkthis box---This PR has been generated by [MendRenovate](https://www.mend.io/free-developer-tools/renovate/). Viewrepository job log[here](https://developer.mend.io/github/camunda/zeebe).<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMTMuMSIsInVwZGF0ZWRJblZlciI6IjM3LjMyMS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJhdXRvbWVyZ2UiXX0=-->
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

@bbakermanbbakermanbbakerman approved these changes

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

22.0

Development

Successfully merging this pull request may close these issues.

3 participants

@andimarek@bbakerman@dondonz

[8]ページ先頭

©2009-2025 Movatter.jp