2020import java .util .concurrent .Executor ;
2121import java .util .concurrent .Executors ;
2222import java .util .function .Supplier ;
23+ import lombok .Getter ;
2324
2425public class GraphQLConfiguration {
2526
@@ -32,12 +33,14 @@ public class GraphQLConfiguration {
3233 private final boolean asyncServletModeEnabled ;
3334 private final Executor asyncExecutor ;
3435 private final long subscriptionTimeout ;
36+ @ Getter
37+ private final long asyncTimeout ;
3538 private final ContextSetting contextSetting ;
3639
3740 private GraphQLConfiguration (GraphQLInvocationInputFactory invocationInputFactory ,
3841 GraphQLQueryInvoker queryInvoker ,
3942 GraphQLObjectMapper objectMapper , List <GraphQLServletListener > listeners , boolean asyncServletModeEnabled ,
40- Executor asyncExecutor , long subscriptionTimeout , ContextSetting contextSetting ,
43+ Executor asyncExecutor , long subscriptionTimeout , long asyncTimeout , ContextSetting contextSetting ,
4144 Supplier <BatchInputPreProcessor > batchInputPreProcessor ) {
4245 this .invocationInputFactory = invocationInputFactory ;
4346 this .queryInvoker = queryInvoker ;
@@ -47,6 +50,7 @@ private GraphQLConfiguration(GraphQLInvocationInputFactory invocationInputFactor
4750 this .asyncServletModeEnabled = asyncServletModeEnabled ;
4851 this .asyncExecutor = asyncExecutor ;
4952 this .subscriptionTimeout = subscriptionTimeout ;
53+ this .asyncTimeout = asyncTimeout ;
5054 this .contextSetting = contextSetting ;
5155 this .batchInputPreProcessor = batchInputPreProcessor ;
5256 }
@@ -119,8 +123,9 @@ public static class Builder {
119123 private boolean asyncServletModeEnabled = false ;
120124 private Executor asyncExecutor = Executors .newCachedThreadPool (new GraphQLThreadFactory ());
121125 private long subscriptionTimeout = 0 ;
126+ private long asyncTimeout = 30 ;
122127 private ContextSetting contextSetting = ContextSetting .PER_QUERY_WITH_INSTRUMENTATION ;
123- private Supplier <BatchInputPreProcessor > batchInputPreProcessorSupplier = () -> new NoOpBatchInputPreProcessor () ;
128+ private Supplier <BatchInputPreProcessor > batchInputPreProcessorSupplier = NoOpBatchInputPreProcessor :: new ;
124129
125130 private Builder (GraphQLInvocationInputFactory .Builder invocationInputFactoryBuilder ) {
126131 this .invocationInputFactoryBuilder = invocationInputFactoryBuilder ;
@@ -178,6 +183,11 @@ public Builder with(long subscriptionTimeout) {
178183 return this ;
179184 }
180185
186+ public Builder asyncTimeout (long asyncTimeout ) {
187+ this .asyncTimeout = asyncTimeout ;
188+ return this ;
189+ }
190+
181191 public Builder with (ContextSetting contextSetting ) {
182192 if (contextSetting != null ) {
183193 this .contextSetting = contextSetting ;
@@ -208,6 +218,7 @@ public GraphQLConfiguration build() {
208218 asyncServletModeEnabled ,
209219 asyncExecutor ,
210220 subscriptionTimeout ,
221+ asyncTimeout ,
211222 contextSetting ,
212223 batchInputPreProcessorSupplier
213224 );
0 commit comments