From c34941c2fc87f709e4e32d5cdabd633171e4f42f Mon Sep 17 00:00:00 2001 From: ulitol97 Date: Fri, 13 May 2022 11:29:47 +0200 Subject: [PATCH] Customizable stream timeout in Docker. --- .../scala/es/weso/rdfshape/server/Server.scala | 5 +++++ .../transformations/CometTransformations.scala | 18 ++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/modules/server/src/main/scala/es/weso/rdfshape/server/Server.scala b/modules/server/src/main/scala/es/weso/rdfshape/server/Server.scala index bc596d25..2f74a845 100644 --- a/modules/server/src/main/scala/es/weso/rdfshape/server/Server.scala +++ b/modules/server/src/main/scala/es/weso/rdfshape/server/Server.scala @@ -179,6 +179,11 @@ object Server { */ val defaultVerbosity = 0 + /** Environment variable checked by the app to know how long to keep waiting for + * items coming via stream + */ + val envVarStreamTimeout = "STREAM_TIMEOUT" + /** System property checked by the app to know how long to keep waiting for * items coming via stream */ diff --git a/modules/server/src/main/scala/es/weso/rdfshape/server/api/routes/schema/logic/operations/stream/transformations/CometTransformations.scala b/modules/server/src/main/scala/es/weso/rdfshape/server/api/routes/schema/logic/operations/stream/transformations/CometTransformations.scala index d0ac7a69..4b9352ca 100644 --- a/modules/server/src/main/scala/es/weso/rdfshape/server/api/routes/schema/logic/operations/stream/transformations/CometTransformations.scala +++ b/modules/server/src/main/scala/es/weso/rdfshape/server/api/routes/schema/logic/operations/stream/transformations/CometTransformations.scala @@ -4,6 +4,7 @@ import cats.effect.IO import com.typesafe.scalalogging.LazyLogging import es.weso.rdfshape.server.Server.{ defaultStreamTimeout, + envVarStreamTimeout, systemPropertyStreamTimeout } import es.weso.rdfshape.server.api.routes.schema.logic.operations.stream.configuration.{ @@ -56,10 +57,19 @@ private[schema] object CometTransformations extends LazyLogging { * Retrieved from a system property which can be overridden by CLI args. */ private lazy val timeout = { - val timeoutFromSystemProp = - Integer - .getInteger(systemPropertyStreamTimeout, defaultStreamTimeout) - .toLong + val timeoutFromSystemProp = { + // Try to fetch in env vars + Option(System.getenv(envVarStreamTimeout)) + .flatMap(_.toIntOption) + .map(_.toLong) + // Else fetch from system properties, resorting to the default value + // if none is found/parseable + .getOrElse( + Integer + .getInteger(systemPropertyStreamTimeout, defaultStreamTimeout) + .toLong + ) + } FiniteDuration(timeoutFromSystemProp, SECONDS) }