Skip to content

Commit e89d53e

Browse files
authored
Merge pull request #2204 from Netflix/feature/reload-data-loader
Fix: Properly construct a dgsDataLoaderReloadController
2 parents 288b0c9 + 4b4309e commit e89d53e

File tree

2 files changed

+44
-3
lines changed

2 files changed

+44
-3
lines changed

graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig/DgsSpringGraphQLAutoConfiguration.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -257,12 +257,11 @@ open class DgsSpringGraphQLAutoConfiguration(
257257
/**
258258
* Creates a [ReloadableDgsDataLoaderProvider] that wraps the standard [DgsDataLoaderProvider].
259259
*
260-
* This provider supports dynamic reloading of data loaders based on the [DgsReloadDataLoadersIndicator].
260+
* This provider supports dynamic reloading of data loaders based on the [DgsDataLoaderReloadController].
261261
* It maintains the same interface as the standard provider but adds reload capabilities.
262262
*
263263
* The `@Primary` annotation ensures this bean takes precedence over the standard `DgsDataLoaderProvider`
264264
* when reload functionality is enabled.
265-
*
266265
*/
267266
@Bean
268267
@Primary
@@ -272,7 +271,7 @@ open class DgsSpringGraphQLAutoConfiguration(
272271
@Qualifier("dgsScheduledExecutorService") dgsScheduledExecutorService: ScheduledExecutorService,
273272
extensionProviders: List<DataLoaderInstrumentationExtensionProvider>,
274273
customizers: List<DgsDataLoaderCustomizer>,
275-
): DgsDataLoaderProvider {
274+
): ReloadableDgsDataLoaderProvider {
276275
LOG.info("Creating reloadable data loader provider with reload support enabled")
277276
return ReloadableDgsDataLoaderProvider(
278277
applicationContext = applicationContext,

graphql-dgs-spring-graphql/src/test/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig/DgsSpringGraphQlAutoConfigurationTest.kt

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,13 @@
1616

1717
package com.netflix.graphql.dgs.springgraphql.autoconfig
1818

19+
import com.netflix.graphql.dgs.DgsDataLoaderReloadController
1920
import com.netflix.graphql.dgs.DgsQueryExecutor
2021
import com.netflix.graphql.dgs.autoconfig.DgsConfigurationProperties
22+
import com.netflix.graphql.dgs.internal.DefaultDgsDataLoaderProvider
23+
import com.netflix.graphql.dgs.internal.DgsDataLoaderProvider
2124
import com.netflix.graphql.dgs.internal.DgsSchemaProvider
25+
import com.netflix.graphql.dgs.internal.ReloadableDgsDataLoaderProvider
2226
import com.netflix.graphql.dgs.mvc.internal.method.HandlerMethodArgumentResolverAdapter
2327
import com.netflix.graphql.dgs.reactive.DgsReactiveQueryExecutor
2428
import com.netflix.graphql.dgs.reactive.internal.DefaultDgsReactiveGraphQLContextBuilder
@@ -179,6 +183,44 @@ class DgsSpringGraphQlAutoConfigurationTest {
179183
}
180184
}
181185

186+
@Test
187+
fun supportsReloadableDataLoaders() {
188+
// when dgs reload is disabled
189+
ApplicationContextRunner()
190+
.withConfiguration(autoConfigurations)
191+
.withPropertyValues("dgs.reload=false")
192+
.run { context ->
193+
assertThat(context)
194+
.doesNotHaveBean(DgsSpringGraphQLAutoConfiguration.DgsDataLoaderReloadAutoConfiguration::class.java)
195+
assertThat(context)
196+
.doesNotHaveBean(ReloadableDgsDataLoaderProvider::class.java)
197+
assertThat(context)
198+
.doesNotHaveBean(DgsDataLoaderReloadController::class.java)
199+
assertThat(context)
200+
.getBean(DgsDataLoaderProvider::class.java)
201+
.describedAs { "The primary DgsDataLoaderProvider " }
202+
.isNotNull
203+
.isInstanceOf(DefaultDgsDataLoaderProvider::class.java)
204+
}
205+
// when dgs reload is enabled
206+
ApplicationContextRunner()
207+
.withConfiguration(autoConfigurations)
208+
.withPropertyValues("dgs.reload=true")
209+
.run { context ->
210+
assertThat(context)
211+
.hasSingleBean(DgsSpringGraphQLAutoConfiguration.DgsDataLoaderReloadAutoConfiguration::class.java)
212+
assertThat(context)
213+
.hasSingleBean(ReloadableDgsDataLoaderProvider::class.java)
214+
assertThat(context)
215+
.hasSingleBean(DgsDataLoaderReloadController::class.java)
216+
assertThat(context)
217+
.getBean(DgsDataLoaderProvider::class.java)
218+
.describedAs { "The primary DgsDataLoaderProvider " }
219+
.isNotNull
220+
.isInstanceOf(ReloadableDgsDataLoaderProvider::class.java)
221+
}
222+
}
223+
182224
@Test
183225
fun introspectionDefaultPropertyTest() {
184226
ApplicationContextRunner()

0 commit comments

Comments
 (0)