diff --git a/graphql-dgs-client/dependencies.lock b/graphql-dgs-client/dependencies.lock index c7d2a6706..f2a9b6963 100644 --- a/graphql-dgs-client/dependencies.lock +++ b/graphql-dgs-client/dependencies.lock @@ -243,6 +243,12 @@ "com.graphql-java:graphql-java-extended-scalars": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -770,6 +776,12 @@ "com.graphql-java:graphql-java-extended-scalars": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -941,6 +953,12 @@ "com.graphql-java:graphql-java-extended-scalars": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" diff --git a/graphql-dgs-example-java-webflux/dependencies.lock b/graphql-dgs-example-java-webflux/dependencies.lock index 7ff71fefd..acd223fc9 100644 --- a/graphql-dgs-example-java-webflux/dependencies.lock +++ b/graphql-dgs-example-java-webflux/dependencies.lock @@ -45,6 +45,12 @@ ], "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -234,6 +240,12 @@ ], "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -450,6 +462,12 @@ ], "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -932,6 +950,12 @@ ], "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -1226,6 +1250,12 @@ ], "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -1439,6 +1469,12 @@ ], "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", diff --git a/graphql-dgs-example-java/dependencies.lock b/graphql-dgs-example-java/dependencies.lock index 8d438c17f..53a596563 100644 --- a/graphql-dgs-example-java/dependencies.lock +++ b/graphql-dgs-example-java/dependencies.lock @@ -48,6 +48,12 @@ ], "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -242,6 +248,12 @@ ], "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -469,6 +481,12 @@ ], "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -1012,6 +1030,12 @@ ], "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -1355,6 +1379,12 @@ ], "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -1585,6 +1615,12 @@ ], "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", diff --git a/graphql-dgs-example-shared/dependencies.lock b/graphql-dgs-example-shared/dependencies.lock index d76b849ad..038273545 100644 --- a/graphql-dgs-example-shared/dependencies.lock +++ b/graphql-dgs-example-shared/dependencies.lock @@ -40,6 +40,12 @@ ], "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -171,6 +177,12 @@ ], "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -306,6 +318,12 @@ ], "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -659,6 +677,12 @@ ], "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -844,6 +868,12 @@ ], "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -979,6 +1009,12 @@ ], "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" diff --git a/graphql-dgs-extended-scalars/dependencies.lock b/graphql-dgs-extended-scalars/dependencies.lock index 0ade4185a..fa13d7065 100644 --- a/graphql-dgs-extended-scalars/dependencies.lock +++ b/graphql-dgs-extended-scalars/dependencies.lock @@ -34,6 +34,12 @@ "com.graphql-java:graphql-java-extended-scalars": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -124,6 +130,12 @@ "com.graphql-java:graphql-java-extended-scalars": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -242,6 +254,12 @@ "com.graphql-java:graphql-java-extended-scalars": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -644,6 +662,12 @@ "com.graphql-java:graphql-java-extended-scalars": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -779,6 +803,12 @@ "com.graphql-java:graphql-java-extended-scalars": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -953,6 +983,12 @@ "com.graphql-java:graphql-java-extended-scalars": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", diff --git a/graphql-dgs-extended-validation/dependencies.lock b/graphql-dgs-extended-validation/dependencies.lock index 22f058957..bc3e7a409 100644 --- a/graphql-dgs-extended-validation/dependencies.lock +++ b/graphql-dgs-extended-validation/dependencies.lock @@ -34,6 +34,12 @@ "com.graphql-java:graphql-java-extended-validation": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -124,6 +130,12 @@ "com.graphql-java:graphql-java-extended-validation": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -242,6 +254,12 @@ "com.graphql-java:graphql-java-extended-validation": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -644,6 +662,12 @@ "com.graphql-java:graphql-java-extended-validation": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -779,6 +803,12 @@ "com.graphql-java:graphql-java-extended-validation": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -953,6 +983,12 @@ "com.graphql-java:graphql-java-extended-validation": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", diff --git a/graphql-dgs-pagination/dependencies.lock b/graphql-dgs-pagination/dependencies.lock index d8c52a3d9..e1ceb8a4d 100644 --- a/graphql-dgs-pagination/dependencies.lock +++ b/graphql-dgs-pagination/dependencies.lock @@ -31,6 +31,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -118,6 +124,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -207,6 +219,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -494,6 +512,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -618,6 +642,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -704,6 +734,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" diff --git a/graphql-dgs-platform/build.gradle.kts b/graphql-dgs-platform/build.gradle.kts index 02b6e3f69..833c25798 100644 --- a/graphql-dgs-platform/build.gradle.kts +++ b/graphql-dgs-platform/build.gradle.kts @@ -54,6 +54,14 @@ dependencies { reject("[20.6, 19.5, 18.2]") } + } + api("com.graphql-java:java-dataloader") { + version { + strictly("[3.2.2]") + prefer("3.2.2") + reject("[3.2.1]") + } + } api("com.graphql-java:graphql-java-extended-scalars") { version { diff --git a/graphql-dgs-reactive/dependencies.lock b/graphql-dgs-reactive/dependencies.lock index 101a1f186..44d799581 100644 --- a/graphql-dgs-reactive/dependencies.lock +++ b/graphql-dgs-reactive/dependencies.lock @@ -34,6 +34,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -133,6 +139,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -232,6 +244,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -558,6 +576,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -691,6 +715,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -808,6 +838,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" diff --git a/graphql-dgs-spring-boot-micrometer/dependencies.lock b/graphql-dgs-spring-boot-micrometer/dependencies.lock index 8d1034aba..97662e713 100644 --- a/graphql-dgs-spring-boot-micrometer/dependencies.lock +++ b/graphql-dgs-spring-boot-micrometer/dependencies.lock @@ -42,6 +42,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -217,6 +223,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -412,6 +424,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -829,6 +847,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -976,6 +1000,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -1168,6 +1198,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", diff --git a/graphql-dgs-spring-boot-oss-autoconfigure/dependencies.lock b/graphql-dgs-spring-boot-oss-autoconfigure/dependencies.lock index a04140a87..cd2d17344 100644 --- a/graphql-dgs-spring-boot-oss-autoconfigure/dependencies.lock +++ b/graphql-dgs-spring-boot-oss-autoconfigure/dependencies.lock @@ -34,6 +34,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -151,6 +157,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -271,6 +283,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -579,6 +597,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -720,6 +744,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -831,6 +861,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" diff --git a/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsAutoConfiguration.kt b/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsAutoConfiguration.kt index 82c48e1c5..ebe8638c7 100644 --- a/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsAutoConfiguration.kt +++ b/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsAutoConfiguration.kt @@ -69,6 +69,8 @@ import org.springframework.mock.web.MockHttpServletRequest import org.springframework.web.context.request.NativeWebRequest import org.springframework.web.context.request.WebRequest import java.util.* +import java.util.concurrent.Executors +import java.util.concurrent.ScheduledExecutorService /** * Framework auto configuration based on open source Spring only, without Netflix integrations. @@ -153,9 +155,16 @@ open class DgsAutoConfiguration( return DefaultDataLoaderOptionsProvider() } + @Bean(destroyMethod = "shutdown") + @ConditionalOnMissingBean + @Qualifier("dgsScheduledExecutorService") + open fun dgsScheduledExecutorService(): ScheduledExecutorService { + return Executors.newSingleThreadScheduledExecutor() + } + @Bean - open fun dgsDataLoaderProvider(applicationContext: ApplicationContext, dataloaderOptionProvider: DgsDataLoaderOptionsProvider): DgsDataLoaderProvider { - return DgsDataLoaderProvider(applicationContext, dataloaderOptionProvider) + open fun dgsDataLoaderProvider(applicationContext: ApplicationContext, dataloaderOptionProvider: DgsDataLoaderOptionsProvider, @Qualifier("dgsScheduledExecutorService") dgsScheduledExecutorService: ScheduledExecutorService): DgsDataLoaderProvider { + return DgsDataLoaderProvider(applicationContext, dataloaderOptionProvider, dgsScheduledExecutorService, configProps.dataloaderTickerModeEnabled) } /** diff --git a/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsConfigurationProperties.kt b/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsConfigurationProperties.kt index 15c13565d..6e2715ce6 100644 --- a/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsConfigurationProperties.kt +++ b/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsConfigurationProperties.kt @@ -29,7 +29,9 @@ data class DgsConfigurationProperties( /** Location of the GraphQL schema files. */ @DefaultValue(DEFAULT_SCHEMA_LOCATION) val schemaLocations: List, @DefaultValue("true") val schemaWiringValidationEnabled: Boolean, - @DefaultValue("false") val enableEntityFetcherCustomScalarParsing: Boolean + @DefaultValue("false") val enableEntityFetcherCustomScalarParsing: Boolean, + /** Data loader properties.*/ + @DefaultValue("false") val dataloaderTickerModeEnabled: Boolean ) { companion object { const val PREFIX: String = "dgs.graphql" diff --git a/graphql-dgs-spring-boot-starter/dependencies.lock b/graphql-dgs-spring-boot-starter/dependencies.lock index 0e4481923..59268cf7a 100644 --- a/graphql-dgs-spring-boot-starter/dependencies.lock +++ b/graphql-dgs-spring-boot-starter/dependencies.lock @@ -39,6 +39,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -182,6 +188,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -345,6 +357,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -747,6 +765,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -968,6 +992,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -1128,6 +1158,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", diff --git a/graphql-dgs-spring-webflux-autoconfigure/dependencies.lock b/graphql-dgs-spring-webflux-autoconfigure/dependencies.lock index b3c9c8120..7d0ea9f11 100644 --- a/graphql-dgs-spring-webflux-autoconfigure/dependencies.lock +++ b/graphql-dgs-spring-webflux-autoconfigure/dependencies.lock @@ -41,6 +41,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -157,6 +163,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -277,6 +289,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -642,6 +660,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -817,6 +841,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -956,6 +986,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" diff --git a/graphql-dgs-spring-webmvc-autoconfigure/dependencies.lock b/graphql-dgs-spring-webmvc-autoconfigure/dependencies.lock index efa538f51..6b49d3294 100644 --- a/graphql-dgs-spring-webmvc-autoconfigure/dependencies.lock +++ b/graphql-dgs-spring-webmvc-autoconfigure/dependencies.lock @@ -37,6 +37,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -145,6 +151,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -253,6 +265,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -580,6 +598,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -730,6 +754,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -847,6 +877,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" diff --git a/graphql-dgs-spring-webmvc/dependencies.lock b/graphql-dgs-spring-webmvc/dependencies.lock index 32373fcd3..a8a08723e 100644 --- a/graphql-dgs-spring-webmvc/dependencies.lock +++ b/graphql-dgs-spring-webmvc/dependencies.lock @@ -34,6 +34,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -130,6 +136,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -225,6 +237,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -518,6 +536,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -642,6 +666,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -740,6 +770,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" diff --git a/graphql-dgs-subscriptions-graphql-sse-autoconfigure/dependencies.lock b/graphql-dgs-subscriptions-graphql-sse-autoconfigure/dependencies.lock index d67f266f6..0bcf62ee3 100644 --- a/graphql-dgs-subscriptions-graphql-sse-autoconfigure/dependencies.lock +++ b/graphql-dgs-subscriptions-graphql-sse-autoconfigure/dependencies.lock @@ -31,6 +31,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -129,6 +135,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -237,6 +249,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -567,6 +585,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -726,6 +750,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -831,6 +861,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" diff --git a/graphql-dgs-subscriptions-graphql-sse/dependencies.lock b/graphql-dgs-subscriptions-graphql-sse/dependencies.lock index 9a64db6bf..540d029a0 100644 --- a/graphql-dgs-subscriptions-graphql-sse/dependencies.lock +++ b/graphql-dgs-subscriptions-graphql-sse/dependencies.lock @@ -41,6 +41,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -149,6 +155,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -256,6 +268,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -570,6 +588,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -718,6 +742,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -828,6 +858,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" diff --git a/graphql-dgs-subscriptions-sse-autoconfigure/dependencies.lock b/graphql-dgs-subscriptions-sse-autoconfigure/dependencies.lock index 9221b2cbf..efc267276 100644 --- a/graphql-dgs-subscriptions-sse-autoconfigure/dependencies.lock +++ b/graphql-dgs-subscriptions-sse-autoconfigure/dependencies.lock @@ -31,6 +31,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -129,6 +135,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -237,6 +249,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -567,6 +585,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -726,6 +750,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -831,6 +861,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" diff --git a/graphql-dgs-subscriptions-sse/dependencies.lock b/graphql-dgs-subscriptions-sse/dependencies.lock index 9a64db6bf..540d029a0 100644 --- a/graphql-dgs-subscriptions-sse/dependencies.lock +++ b/graphql-dgs-subscriptions-sse/dependencies.lock @@ -41,6 +41,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -149,6 +155,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -256,6 +268,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -570,6 +588,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -718,6 +742,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -828,6 +858,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" diff --git a/graphql-dgs-subscriptions-websockets-autoconfigure/dependencies.lock b/graphql-dgs-subscriptions-websockets-autoconfigure/dependencies.lock index d0dbaefac..309cdb282 100644 --- a/graphql-dgs-subscriptions-websockets-autoconfigure/dependencies.lock +++ b/graphql-dgs-subscriptions-websockets-autoconfigure/dependencies.lock @@ -44,6 +44,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -163,6 +169,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -279,6 +291,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -604,6 +622,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -768,6 +792,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -881,6 +911,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" diff --git a/graphql-dgs-subscriptions-websockets/dependencies.lock b/graphql-dgs-subscriptions-websockets/dependencies.lock index 12ebac755..e1f8502a3 100644 --- a/graphql-dgs-subscriptions-websockets/dependencies.lock +++ b/graphql-dgs-subscriptions-websockets/dependencies.lock @@ -41,6 +41,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -155,6 +161,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -268,6 +280,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -579,6 +597,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -724,6 +748,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" @@ -834,6 +864,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" diff --git a/graphql-dgs-webflux-starter/dependencies.lock b/graphql-dgs-webflux-starter/dependencies.lock index cf34aa33f..e55feb153 100644 --- a/graphql-dgs-webflux-starter/dependencies.lock +++ b/graphql-dgs-webflux-starter/dependencies.lock @@ -39,6 +39,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -188,6 +194,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -357,6 +369,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -774,6 +792,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -1010,6 +1034,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -1176,6 +1206,12 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", diff --git a/graphql-dgs/build.gradle.kts b/graphql-dgs/build.gradle.kts index 90e30f489..886fded87 100644 --- a/graphql-dgs/build.gradle.kts +++ b/graphql-dgs/build.gradle.kts @@ -27,6 +27,7 @@ dependencies { api(project(":graphql-dgs-mocking")) api("com.graphql-java:graphql-java") + api("com.graphql-java:java-dataloader") api("com.jayway.jsonpath:json-path") implementation("org.jetbrains.kotlin:kotlin-reflect") diff --git a/graphql-dgs/dependencies.lock b/graphql-dgs/dependencies.lock index dfdd8df34..ee07bc5b6 100644 --- a/graphql-dgs/dependencies.lock +++ b/graphql-dgs/dependencies.lock @@ -39,6 +39,9 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "locked": "2.7.0" }, @@ -190,6 +193,9 @@ "com.graphql-java:graphql-java-extended-scalars": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "locked": "2.7.0" }, @@ -282,6 +288,9 @@ "com.graphql-java:graphql-java-extended-scalars": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "locked": "2.7.0" }, @@ -408,6 +417,9 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "locked": "2.7.0" }, @@ -500,6 +512,9 @@ "com.graphql-java:graphql-java-extended-scalars": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "locked": "2.7.0" }, @@ -788,6 +803,9 @@ ], "locked": "21.2" }, + "com.graphql-java:java-dataloader": { + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "locked": "2.7.0" }, @@ -888,6 +906,9 @@ "com.graphql-java:graphql-java-extended-scalars": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "locked": "2.7.0" }, @@ -980,6 +1001,9 @@ "com.graphql-java:graphql-java-extended-scalars": { "locked": "21.0" }, + "com.graphql-java:java-dataloader": { + "locked": "3.2.2" + }, "com.jayway.jsonpath:json-path": { "locked": "2.7.0" }, diff --git a/graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal/BaseDgsQueryExecutor.kt b/graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal/BaseDgsQueryExecutor.kt index 2f5721a45..f7b7b0394 100644 --- a/graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal/BaseDgsQueryExecutor.kt +++ b/graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal/BaseDgsQueryExecutor.kt @@ -39,12 +39,13 @@ import graphql.execution.ExecutionStrategy import graphql.execution.instrumentation.Instrumentation import graphql.execution.preparsed.PreparsedDocumentProvider import graphql.schema.GraphQLSchema +import org.dataloader.registries.ScheduledDataLoaderRegistry import org.intellij.lang.annotations.Language import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.http.HttpStatus import org.springframework.util.StringUtils -import java.util.Optional +import java.util.* import java.util.concurrent.CompletableFuture object BaseDgsQueryExecutor { @@ -118,7 +119,11 @@ object BaseDgsQueryExecutor { .extensions(extensions.orEmpty()) .build() graphQLContextFuture.complete(executionInput.graphQLContext) - graphQL.executeAsync(executionInput) + graphQL.executeAsync(executionInput).whenComplete { _, _ -> + if (dataLoaderRegistry is ScheduledDataLoaderRegistry) { + dataLoaderRegistry.close() + } + } } catch (e: Exception) { logger.error("Encountered an exception while handling query {}", query, e) val errors: List = if (e is GraphQLError) listOf(e) else emptyList() diff --git a/graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal/DgsDataLoaderProvider.kt b/graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal/DgsDataLoaderProvider.kt index 10b8f7d77..2cc2396bd 100644 --- a/graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal/DgsDataLoaderProvider.kt +++ b/graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal/DgsDataLoaderProvider.kt @@ -31,12 +31,15 @@ import org.dataloader.DataLoaderRegistry import org.dataloader.MappedBatchLoader import org.dataloader.MappedBatchLoaderWithContext import org.dataloader.registries.DispatchPredicate +import org.dataloader.registries.ScheduledDataLoaderRegistry import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.aop.support.AopUtils import org.springframework.beans.factory.NoSuchBeanDefinitionException import org.springframework.context.ApplicationContext import org.springframework.util.ReflectionUtils +import java.util.concurrent.Executors +import java.util.concurrent.ScheduledExecutorService import java.util.function.Supplier import kotlin.system.measureTimeMillis @@ -45,7 +48,9 @@ import kotlin.system.measureTimeMillis */ class DgsDataLoaderProvider( private val applicationContext: ApplicationContext, - private val dataLoaderOptionsProvider: DgsDataLoaderOptionsProvider = DefaultDataLoaderOptionsProvider() + private val dataLoaderOptionsProvider: DgsDataLoaderOptionsProvider = DefaultDataLoaderOptionsProvider(), + private val scheduledExecutorService: ScheduledExecutorService = Executors.newSingleThreadScheduledExecutor(), + private val enableTickerMode: Boolean = false ) { private data class LoaderHolder(val theLoader: T, val annotation: DgsDataLoader, val name: String, val dispatchPredicate: DispatchPredicate? = null) @@ -62,7 +67,12 @@ class DgsDataLoaderProvider( } fun buildRegistryWithContextSupplier(contextSupplier: Supplier): DataLoaderRegistry { - val registry = DgsDataLoaderRegistry() + // We need to set the default predicate to 20ms and individually override with DISPATCH_ALWAYS or the custom dispatch predicate, if specified + // The data loader ends up applying the overall dispatch predicate when the custom dispatch predicate is not true otherwise. + val registry = ScheduledDataLoaderRegistry.newScheduledRegistry().scheduledExecutorService(scheduledExecutorService).tickerMode(enableTickerMode).dispatchPredicate( + DispatchPredicate.DISPATCH_NEVER + ).build() + val totalTime = measureTimeMillis { val extensionProviders = applicationContext .getBeanProvider(DataLoaderInstrumentationExtensionProvider::class.java) @@ -218,7 +228,7 @@ class DgsDataLoaderProvider( private fun registerDataLoader( holder: LoaderHolder<*>, - registry: DgsDataLoaderRegistry, + registry: ScheduledDataLoaderRegistry, contextSupplier: Supplier<*>, extensionProviders: Iterable ) { @@ -235,9 +245,9 @@ class DgsDataLoaderProvider( } if (holder.dispatchPredicate == null) { - registry.register(holder.name, loader) + registry.register(holder.name, loader, DispatchPredicate.DISPATCH_ALWAYS) } else { - registry.registerWithDispatchPredicate(holder.name, loader, holder.dispatchPredicate) + registry.register(holder.name, loader, holder.dispatchPredicate) } }