Closed renovate[bot] closed 5 months ago
[!IMPORTANT]
Auto Review Skipped
Bot user detected.
To trigger a single review, invoke the
@coderabbitai review
command.You can disable this status message by setting the
reviews.review_status
tofalse
in the CodeRabbit configuration file.
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
This PR contains the following updates:
8.4.0
->8.6.0
8.4.0
->8.6.0
Release Notes
Netflix/dgs-framework (com.netflix.graphql.dgs:graphql-dgs-spring-boot-starter)
### [`v8.6.0`](https://togithub.com/Netflix/dgs-framework/releases/tag/v8.6.0) ##### What’s Changed This PR converts errors from graphql-java thrown prior to data fetcher processing, such as various Validation errors to use the TypedGraphQLError format to be consistent with the other errors handled in the DGS framework. The main change is to add additional `errorDetail` and `errorType` fields as part of extensions. The `message`, `location`, `classification` are all preserved as is. We expect this will not be a breaking change unless users are depending on the exact string formatted error. An example of the updated error is shown below: ``` { "errors": [ { "message": "Validation error (FieldUndefined@[hellos]) : Field 'hellos' in type 'Query' is undefined", "locations": [ { "line": 2, "column": 3 } ], "path": [ "hellos" ], "extensions": { "classification": "ValidationError", "errorType": "BAD_REQUEST", "errorDetail": "FIELD_NOT_FOUND" } } ] } ``` - Convert graphql-java validation errors to TypedGraphQL error ([#1905](https://togithub.com/Netflix/dgs-framework/issues/1905)) [@srinivasankavitha](https://togithub.com/srinivasankavitha) ### [`v8.5.8`](https://togithub.com/Netflix/dgs-framework/releases/tag/v8.5.8) #### What’s Changed - Disable compiler warnings from javadoc ([#1896](https://togithub.com/Netflix/dgs-framework/issues/1896)) [@paulbakker](https://togithub.com/paulbakker) - Add stacktrace to exception log. ([#1895](https://togithub.com/Netflix/dgs-framework/issues/1895)) [@srinivasankavitha](https://togithub.com/srinivasankavitha) ### [`v8.5.7`](https://togithub.com/Netflix/dgs-framework/releases/tag/v8.5.7) #### What’s Changed - Update to Spring Boot 3.2.5 ([#1893](https://togithub.com/Netflix/dgs-framework/issues/1893)) [@kilink](https://togithub.com/kilink) - Bump actions/checkout from 4.1.2 to 4.1.3 ([#1890](https://togithub.com/Netflix/dgs-framework/issues/1890)) [@dependabot](https://togithub.com/dependabot) - Add flag for collecting metadata information for native image ([#1891](https://togithub.com/Netflix/dgs-framework/issues/1891)) [@AyushChaubey](https://togithub.com/AyushChaubey) ### [`v8.5.6`](https://togithub.com/Netflix/dgs-framework/releases/tag/v8.5.6) ##### What’s Changed - Set InputArgumentResolver to highest priority so it is matched first ([#1884](https://togithub.com/Netflix/dgs-framework/issues/1884)) [@srinivasankavitha](https://togithub.com/srinivasankavitha) - Introduce optional log level property on DgsException ([#1881](https://togithub.com/Netflix/dgs-framework/issues/1881)) [@paulbakker](https://togithub.com/paulbakker) - Fix DgsDataLoaderRegistryConsumer when wrapped with Micrometer ([#1859](https://togithub.com/Netflix/dgs-framework/issues/1859)) [@prokop7](https://togithub.com/prokop7) ### [`v8.5.5`](https://togithub.com/Netflix/dgs-framework/releases/tag/v8.5.5) ##### What’s Changed - optional-context-propagation ([#1878](https://togithub.com/Netflix/dgs-framework/issues/1878)) [@paulbakker](https://togithub.com/paulbakker) ### [`v8.5.4`](https://togithub.com/Netflix/dgs-framework/releases/tag/v8.5.4) #### What’s Changed - Update multipart-spring-graphql dependency ([#1877](https://togithub.com/Netflix/dgs-framework/issues/1877)) [@paulbakker](https://togithub.com/paulbakker) - Expose errorType in TypedGraphQLError ([#1867](https://togithub.com/Netflix/dgs-framework/issues/1867)) [@kilink](https://togithub.com/kilink) - Use micrometer context propagation for virtual thread executor ([#1875](https://togithub.com/Netflix/dgs-framework/issues/1875)) [@paulbakker](https://togithub.com/paulbakker) - Disable problematic autoconfigs from spring-graphql by default ([#1874](https://togithub.com/Netflix/dgs-framework/issues/1874)) [@paulbakker](https://togithub.com/paulbakker) - Fix missing response in DgsContext ([#1870](https://togithub.com/Netflix/dgs-framework/issues/1870)) [@paulbakker](https://togithub.com/paulbakker) ### [`v8.5.3`](https://togithub.com/Netflix/dgs-framework/releases/tag/v8.5.3) #### What’s Changed - Rework DgsDataLoaderRegistry to avoid some overhead ([#1842](https://togithub.com/Netflix/dgs-framework/issues/1842)) [@kilink](https://togithub.com/kilink) - Bump actions/cache from 4.0.1 to 4.0.2 ([#1855](https://togithub.com/Netflix/dgs-framework/issues/1855)) [@dependabot](https://togithub.com/dependabot) - Update to Spring Boot 3.2.4 ([#1851](https://togithub.com/Netflix/dgs-framework/issues/1851)) [@kilink](https://togithub.com/kilink) - Switch to using measureTimedValue ([#1843](https://togithub.com/Netflix/dgs-framework/issues/1843)) [@kilink](https://togithub.com/kilink) - Remove deprecated fields from TypedGraphQLError ([#1824](https://togithub.com/Netflix/dgs-framework/issues/1824)) [@kilink](https://togithub.com/kilink) ### [`v8.5.2`](https://togithub.com/Netflix/dgs-framework/releases/tag/v8.5.2) #### What’s Changed - Fix bug in Spring query executors ([#1864](https://togithub.com/Netflix/dgs-framework/issues/1864)) [@kilink](https://togithub.com/kilink) ### [`v8.5.0`](https://togithub.com/Netflix/dgs-framework/releases/tag/v8.5.0) The DGS and Spring GraphQL teams are super excited to introduce deep integration between the DGS framework and Spring GraphQL. This will bring the community together, and we can continue building the best possible GraphQL framework for Spring Boot in the future. Special thanks to [@kilink](https://togithub.com/kilink) for being our first early adopter and contributing many bug fixes and performance improvements as part of this effort, and to [@rstoyanchev](https://togithub.com/rstoyanchev) and [@bclozel](https://togithub.com/bclozel) from the Spring GraphQL team for partnering with us closely on integration between the frameworks. ##### Getting Started with DGS/Spring GraphQL You can opt-in to use DGS/Spring GraphQL by replacing the starter dependency. Replace `implementation "com.netflix.graphql.dgs:graphql-dgs-spring-boot-starter"` with `implementation "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter"`. You also need to add either Spring WebMVC or Spring WebFlux explicitly. With this integration, it is technically possible to mix and match the DGS/Spring GraphQL programming models. However, to maintain consistency in your codebase and to take full advantage of DGS features, we recommend sticking with the DGS programming model. Additional features from Spring GraphQL will be available via existing Spring GraphQL extensions, such as [multipart-spring-graphql](https://togithub.com/nkonev/multipart-spring-graphql) and the [https://github.com/apollographql/federation-jvm/pull/354](https://togithub.com/apollographql/federation-jvm/pull/354) in the JVM Federation library. ##### Background - Two competing frameworks The DGS Framework provides Java developers with a programming model on top of Spring Boot to create GraphQL services. Netflix open-sourced the DGS framework in 2021, and has been the widely adopted GraphQL Java framework by many companies. Soon after we open-sourced the DGS framework, we learned about parallel efforts by the Spring team to develop a GraphQL framework for Spring Boot. The Spring GraphQL project was in the early stages at the time and provided a low-level of integration with graphql-java. Over the past year, however, Spring GraphQL has matured and is mostly at feature parity with the DGS Framework. We now have 2 competing frameworks that solve the same problems for our users. Today, new users must choose between the DGS Framework or Spring GraphQL, thus missing out on features available in one framework but not the other. This is not an ideal situation for the GraphQL Java community. For the maintainers of DGS and Spring GraphQL, it would be far more effective to collaborate on features and improvements instead of having to solve the same problem independently. Finally, a unified community would provide us with better channels for feedback. ##### Technical implementation The details of the implementation are discussed in detail [in the documentation](https://netflix.github.io/dgs/spring-graphql-integration/). ##### Required Changes The good news is that the new integration has been mostly a drop-in replacement, not requiring any major code changes for the user. ##### Async Dispatch By default, Spring GraphQL uses async dispatch for handling HTTP GraphQL Requests when using WebMVC. In this DGS Framework we have turned off this behavior by default to preserve existing functionality, since it requires existing code to be async aware. This implies servlet filters, tests etc. need to be also async aware. You can turn on async behavior by setting the `dgs.graphql.spring.webmvc.asyncdispatch.enabled` to true. It is worth noting that with the Spring GraphQL integration, your MockMVC test set up does need to be updated. Since web request processing is now based on async dispatching mechanism, we now [require explicit handling for this](https://docs.spring.io/spring-framework/reference/testing/spring-mvc-test-framework/async-requests.html) in the test setup. ##### File Uploads Support for file uploads will no longer be available by default in the DGS framework. This is supported using an external dependency for Spring GraphQL via [multipart-spring-graphql](https://togithub.com/nkonev/multipart-spring-graphql). ##### Schema Inspection You can now inspect your schema using Spring GraphQL's \[schema inspection] (https://docs.spring.io/spring-graphql/reference/request-execution.html#execution.graphqlsource.schema-mapping-inspection) feature for DGS data fetchers as well. You can now inspect schema fields and validate existing DGS data fetcher/and or Spring GraphQL data fetcher registrations, to check if all schema fields are covered either by an explicitly registered DataFetcher, or a matching Java object property. The inspection also performs a reverse check looking for DataFetcher registrations against schema fields that don't exist. ##### Performance At Netflix, we tested the DGS/Spring GraphQL integration on some of our largest services. We have worked hard to make performance of the new integration on-par with the existing implementation. Performance (CPU, memory, latency) is now the same or better on all the services we have tested. ##### Known Gaps At this time, we are lacking support for SSE based subscriptions. This is on the roadmap and will be made available depending on support in Spring GraphQL. ##### Configuration There is some overlap between configuration properties for DGS and Spring GraphQL. Where properties overlap, we use the DGS property for the best backward compatibility. The following list is the overlapping properties. | *DGS property* | *Spring GraphQL property* | *What to use* | |----|----| ----- | | `dgs.graphql.schema-locations` | `spring.graphql.schema.locations` | Use `dgs.graphql.schema-locations` | | N/A | `spring.graphql.schema.fileExtensions` | Not applicable, because `dgs.graphql.schema-locations` includes the path | | `dgs.graphql.graphiql.enabled` | `spring.graphql.graphiql.enabled` | Use `dgs.graphql.graphiql.enabled` | | `dgs.graphql.graphiql.path` | `spring.graphql.graphiql.path` | Use `dgs.graphql.graphiql.path` | | `dgs.graphql.websocket.connection-init-timeout` | `spring.graphql.websocket.connection-init-timeout` | DGS property sets the Spring GraphQL property | New properties for Spring GraphQl integration are: | *DGS Property* | *Description* | |---|-----| `dgs.graphql.spring.webmvc.asyncdispatch.enabled` | To enable async dispatching for GraphQL requests | ### [`v8.4.4`](https://togithub.com/Netflix/dgs-framework/releases/tag/v8.4.4) ##### What’s Changed - Update graphql-java to 21.5 ([#1861](https://togithub.com/Netflix/dgs-framework/issues/1861)) [@spellew](https://togithub.com/spellew) ### [`v8.4.3`](https://togithub.com/Netflix/dgs-framework/releases/tag/v8.4.3) ##### What’s Changed - Add logging for exceptions when encountering internal server error. ([#1858](https://togithub.com/Netflix/dgs-framework/issues/1858)) [@srinivasankavitha](https://togithub.com/srinivasankavitha) - Bump actions/checkout from 4.1.1 to 4.1.2 ([#1847](https://togithub.com/Netflix/dgs-framework/issues/1847)) [@dependabot](https://togithub.com/dependabot) ### [`v8.4.2`](https://togithub.com/Netflix/dgs-framework/releases/tag/v8.4.2) #### What’s Changed - Update graphql-java to 21.4 ([#1850](https://togithub.com/Netflix/dgs-framework/issues/1850)) [@kailyak](https://togithub.com/kailyak) ### [`v8.4.1`](https://togithub.com/Netflix/dgs-framework/releases/tag/v8.4.1) ##### What’s Changed - Bump actions/cache from 4.0.0 to 4.0.1 ([#1828](https://togithub.com/Netflix/dgs-framework/issues/1828)) [@dependabot](https://togithub.com/dependabot) - Bump org.apache.logging.log4j:log4j-to-slf4j from 2.23.0 to 2.23.1 ([#1838](https://togithub.com/Netflix/dgs-framework/issues/1838)) [@dependabot](https://togithub.com/dependabot) - Bump org.apache.logging.log4j:log4j-api from 2.23.0 to 2.23.1 ([#1837](https://togithub.com/Netflix/dgs-framework/issues/1837)) [@dependabot](https://togithub.com/dependabot) - Optimize conversion in DefaultInputObjectMapper ([#1835](https://togithub.com/Netflix/dgs-framework/issues/1835)) [@kilink](https://togithub.com/kilink) - Update to Kotlin 1.9.23 ([#1840](https://togithub.com/Netflix/dgs-framework/issues/1840)) [@kilink](https://togithub.com/kilink) - Update to Spring Boot 3.2.3 ([#1834](https://togithub.com/Netflix/dgs-framework/issues/1834)) [@kilink](https://togithub.com/kilink)Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR has been generated by Mend Renovate. View repository job log here.