From cfbc81ab72acdc01770c24326a7518a79ad941f6 Mon Sep 17 00:00:00 2001 From: Alexey Zhokhov Date: Tue, 16 Aug 2022 05:19:31 +0800 Subject: [PATCH] For non-async servlet wait until GraphQL async operation finished. --- .../graphql/kickstart/servlet/HttpRequestInvokerImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java index 4a684464..8f24c3ca 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java @@ -20,6 +20,7 @@ import java.util.concurrent.CancellationException; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionException; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; import javax.servlet.AsyncContext; import javax.servlet.http.HttpServletRequest; @@ -105,7 +106,8 @@ private void handle( ListenerHandler listenerHandler) { try { FutureExecutionResult futureResult = invoke(invocationInput, request, response); - handleInternal(futureResult, request, response, listenerHandler); + handleInternal(futureResult, request, response, listenerHandler) + .get(configuration.getAsyncTimeout(), TimeUnit.MILLISECONDS); } catch (GraphQLException e) { response.setStatus(STATUS_BAD_REQUEST); log.info("Bad request: cannot handle http request", e);