Skip to content

Update dependency com.netflix.graphql.dgs:graphql-dgs-spring-boot-starter to v9 #6

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Jan 11, 2023

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
com.netflix.graphql.dgs:graphql-dgs-spring-boot-starter 3.12.1 -> 9.2.2 age adoption passing confidence

Warning

Some dependencies could not be looked up. Check the Dependency Dashboard for more information.


Release Notes

Netflix/dgs-framework (com.netflix.graphql.dgs:graphql-dgs-spring-boot-starter)

v9.2.2

Compare Source

Ignore builds/.kotlin to not fail the build because of uncommitted changes.

v9.2.0

Compare Source

What’s Changed

v9.1.3

Compare Source

What’s Changed

v9.1.2

Compare Source

What’s Changed

v9.1.1

Compare Source

What’s Changed

v9.1.0

Compare Source

What’s Changed

v9.0.4

Compare Source

What's Changed

PLEASE NOTE: the nullability fix on GraphQLResponse.getRequestDetails is technically a breaking change for any Kotlin usages. You will need to either properly handle the null checks, or add !! wherever you use the method to keep the same (potentially incorrect) behavior.

Full Changelog: Netflix/dgs-framework@v9.0.3...v9.0.4

v9.0.3

Compare Source

What’s Changed

v9.0.2

Compare Source

What’s Changed

v9.0.1

Compare Source

What’s Changed

v9.0.0: Spring Boot 3.3 and GraphQL Java 22

Compare Source

This release builds against Spring Boot 3.3, Spring GraphQL 1.3 and GraphQL Java 22 🎉

This is a major release because the upgrade to Boot 3.3 and GraphQL Java 22 are significant, and may require changes in your application code. There are no breaking changes in DGS itself though.

The changes in DGS itself are minimal: https://github.com/Netflix/dgs-framework/pull/1920

The most likely source of incompatibility are the changes in Instrumentation in GraphQL Java.

DGS 9.x is no longer compatible with Spring Boot 3.2 or below. It is however possible to use DGS 9 with Spring Boot 3.3 but with GraphQL Java 21 (the previous version).

v8.7.1

Compare Source

What’s Changed

v8.6.1

Compare Source

What’s Changed

v8.6.0

Compare Source

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"
      }
    }
  ]
}

v8.5.8

Compare Source

What’s Changed

v8.5.7

Compare Source

What’s Changed

v8.5.6

Compare Source

What’s Changed

v8.5.5

Compare Source

What’s Changed

v8.5.4

Compare Source

What’s Changed

v8.5.3

Compare Source

What’s Changed

v8.5.2

Compare Source

What’s Changed

v8.5.0

Compare Source

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 for being our first early adopter and contributing many bug fixes and performance improvements as part of this effort, and to @​rstoyanchev and @​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 and the https://github.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.

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 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.

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

Compare Source

What’s Changed

v8.4.3

Compare Source

What’s Changed

v8.4.2

Compare Source

What’s Changed

v8.4.1

Compare Source

What’s Changed

v8.4.0

Compare Source

What's Changed

Full Changelog: Netflix/dgs-framework@v8.3.1...v8.4.0

v8.3.1

Compare Source

What’s Changed

v8.3.0

Compare Source

What’s Changed

This release updates the framework to use a new major version of the federation library: federation-graphql-java-support to 4.4.0(https://github.com/apollographql/federation-jvm/releases/tag/v4.4.0) from the previous 3.0.0.
There are changes to how the federated-tracing context is set up since deprecated API support for this is now dropped in the library. Besides this change, this release should be backwards compatible for DGS users. Please refer to their release notes for more details.

v8.2.5

Compare Source

What's Changed

New Contributors

Full Changelog: Netflix/dgs-framework@v8.2.4...v8.2.5

v8.2.4

Compare Source

What’s Changed

  • Add back getters returning Optional to MetricsInstrumentationState (#​1801) @​kilink

v8.2.3

Compare Source

What’s Changed

v8.2.2

Compare Source

What’s Changed

v8.2.1

Compare Source

What’s Changed

v8.2.0

Compare Source

What's Changed

Full Changelog: Netflix/dgs-framework@v8.1.1...v8.2.0

v8.1.1

Compare Source

What’s Changed

v8.1.0

Compare Source

What’s Changed

This release introduces a new configuration to enable ticker mode in the ScheduledExecutorService via dgs.graphql.dataloaderTickerModeEnabled . This uses the new ticker mode feature introduced in the 3.2.1 release of java-dataloader and additional fixes in 3.2.2. This change allows the usage of chained dataloaders without the need to manually dispatch the loader calls using the ScheduledDataLoaderRegistry with ticker mode enabled.

v8.0.3

Compare Source

What’s Changed

  • fix issue 1569 -- parse custom scalars in _entities representations (#​1710) @​Emily

v8.0.2

Compare Source

What’s Changed

v8.0.1

Compare Source

What’s Changed

v8.0.0

Compare Source

This release updates the graphql-java version to 21.2. The main breaking change affects the usage of the already deprecated DefaultExceptionHandler::onException method. If you have defined your own custom excepti


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 this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch 2 times, most recently from 4fcd0d2 to fa4d63f Compare January 18, 2023 02:00
@renovate renovate bot changed the title Update dependency com.netflix.graphql.dgs:graphql-dgs-spring-boot-starter to v5 Update dependency com.netflix.graphql.dgs:graphql-dgs-spring-boot-starter to v6 Jan 18, 2023
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from fa4d63f to 3f7c319 Compare February 17, 2023 22:47
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch 2 times, most recently from 47ed4b6 to cb972c9 Compare April 5, 2023 22:57
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from cb972c9 to bdeb749 Compare April 16, 2023 04:10
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from bdeb749 to f566e57 Compare April 25, 2023 05:50
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from f566e57 to 3f38977 Compare May 15, 2023 23:06
@renovate renovate bot changed the title Update dependency com.netflix.graphql.dgs:graphql-dgs-spring-boot-starter to v6 Update dependency com.netflix.graphql.dgs:graphql-dgs-spring-boot-starter to v7 May 15, 2023
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from 3f38977 to 06ae618 Compare May 31, 2023 21:52
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from 06ae618 to 3b1dde6 Compare June 13, 2023 18:05
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch 2 times, most recently from 146e511 to bbe16d0 Compare July 10, 2023 21:06
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch 3 times, most recently from 8192e02 to 1133182 Compare July 27, 2023 21:02
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from 1133182 to 8fd4b2c Compare August 31, 2023 00:42
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch 2 times, most recently from eaa6e64 to 804cde6 Compare September 18, 2023 21:59
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch 2 times, most recently from 3639508 to ef23dbd Compare October 13, 2023 01:34
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from ef23dbd to fa485e8 Compare October 28, 2023 00:38
@renovate renovate bot changed the title Update dependency com.netflix.graphql.dgs:graphql-dgs-spring-boot-starter to v7 Update dependency com.netflix.graphql.dgs:graphql-dgs-spring-boot-starter to v8 Oct 28, 2023
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from fa485e8 to 3cf867d Compare November 6, 2023 07:40
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch 3 times, most recently from f0b70bb to 241c64e Compare November 17, 2023 00:57
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from 241c64e to 5971084 Compare November 22, 2023 01:21
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from 5971084 to b7d3866 Compare December 8, 2023 21:49
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from 0767175 to c46fe8a Compare February 20, 2024 22:27
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from c46fe8a to 721fc08 Compare February 29, 2024 00:25
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch 2 times, most recently from f174016 to b86a169 Compare March 19, 2024 20:12
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch 5 times, most recently from 722690b to 14bbc20 Compare April 3, 2024 19:46
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch 2 times, most recently from c0d5eca to 2ae2e7f Compare April 9, 2024 03:33
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from 2ae2e7f to 81e5c66 Compare April 17, 2024 20:21
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch 2 times, most recently from 029c0bf to c47067a Compare April 30, 2024 22:46
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from c47067a to 949d1b8 Compare May 10, 2024 21:31
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from 949d1b8 to beb91f8 Compare May 20, 2024 22:28
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch 2 times, most recently from 6e7836b to be78171 Compare June 1, 2024 01:46
@renovate renovate bot changed the title Update dependency com.netflix.graphql.dgs:graphql-dgs-spring-boot-starter to v8 Update dependency com.netflix.graphql.dgs:graphql-dgs-spring-boot-starter to v9 Jun 1, 2024
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from be78171 to da59a30 Compare June 14, 2024 20:34
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch 2 times, most recently from 4a4c1d1 to 2377ac1 Compare July 1, 2024 18:40
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from 2377ac1 to a8c0bb3 Compare July 11, 2024 18:59
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from a8c0bb3 to 6d1603d Compare August 20, 2024 01:05
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch 2 times, most recently from 7627f48 to 33bf889 Compare September 17, 2024 23:05
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from 33bf889 to 72cbae0 Compare October 16, 2024 01:04
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from 72cbae0 to 43a0599 Compare November 19, 2024 11:11
@renovate renovate bot force-pushed the renovate/major-netflix-dgs.spring.version branch from 43a0599 to 8f30f26 Compare November 26, 2024 14:49
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants