We have some ring routes in our HTTP direct ring handler, which returns some Excel files, which are constructed on the fly.
This handler sometimes runs for more than a minute, resulting in the following error:
HTTP ERROR 503 Async servlet timeout
MESSAGE: Async servlet timeout
Powered by Jetty:// 9.4.48.v20220622
How can we raise this timeout to ~5minutes, which is the maximum timeout of AWS NLBs?
(We are exposing the HTTP direct ion endpoint to the public internet via an AWS NLB, to avoid the 30s timeout and 10MB response payload limit of the AWS API Gateway)
Multiple sources on the internet - eg. https://github.com/ring-clojure/ring/issues/299 - mention a
org.eclipse.jetty.server.HttpChannelState.DEFAULT_TIMEOUT Java property which is supposed to affect Jetty's async context timeout.
Since the change of this property at runtime is not picked up by a running jetty instance, we have added provided it as a startup option, via the
OverrideSettings CloudFormation template parameter:
(str "export JVM_FLAGS=\"$JVM_FLAGS"
It is indeed observable within the ion JVM process:
Yet we are getting a 503 timeout response from the
cognitect.http_endpoint.jetty.FnServlet-49bf6f8c servlet after 1 minute still.
Request, which take less then a minute work as expected.