diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/query/util/QueryTimeoutUtils.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/query/util/QueryTimeoutUtils.java index cb4d08310..4c6f90881 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/query/util/QueryTimeoutUtils.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/query/util/QueryTimeoutUtils.java @@ -13,10 +13,18 @@ import org.lowcoder.sdk.exception.PluginException; import com.google.common.annotations.VisibleForTesting; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +@Component public final class QueryTimeoutUtils { - private static final int DEFAULT_QUERY_TIMEOUT_MILLIS = 10000; + private static int defaultQueryTimeout = 10; + + @Value("${default.query-timeout}") + public void setDefaultQueryTimeoutMillis(int defaultQueryTimeout) { + QueryTimeoutUtils.defaultQueryTimeout = defaultQueryTimeout; + } public static int parseQueryTimeoutMs(String timeoutStr, Map paramMap, int maxQueryTimeout) { return parseQueryTimeoutMs(renderMustacheString(timeoutStr, paramMap), maxQueryTimeout); @@ -25,7 +33,7 @@ public static int parseQueryTimeoutMs(String timeoutStr, Map par @VisibleForTesting public static int parseQueryTimeoutMs(String timeoutStr, int maxQueryTimeout) { if (StringUtils.isBlank(timeoutStr)) { - return DEFAULT_QUERY_TIMEOUT_MILLIS; + return Math.min(defaultQueryTimeout * 1000, (int)Duration.ofSeconds(maxQueryTimeout).toMillis()); } Pair unitInfo = getUnitInfo(timeoutStr); diff --git a/server/api-service/lowcoder-server/src/main/resources/application-debug.yaml b/server/api-service/lowcoder-server/src/main/resources/application-debug.yaml index 56e6a0e67..b6faa2025 100644 --- a/server/api-service/lowcoder-server/src/main/resources/application-debug.yaml +++ b/server/api-service/lowcoder-server/src/main/resources/application-debug.yaml @@ -52,3 +52,6 @@ logging: level: root: debug org.lowcoder: debug + +default: + query-timeout: ${LOWCODER_DEFAULT_QUERY_TIMEOUT:10s} \ No newline at end of file diff --git a/server/api-service/lowcoder-server/src/main/resources/application.yaml b/server/api-service/lowcoder-server/src/main/resources/application.yaml index 2c7c5bbf1..988c45200 100644 --- a/server/api-service/lowcoder-server/src/main/resources/application.yaml +++ b/server/api-service/lowcoder-server/src/main/resources/application.yaml @@ -53,6 +53,7 @@ default: org-app-count: ${LOWCODER_MAX_APPS_PER_ORG:1000} developer-count: ${LOWCODER_MAX_DEVELOPERS:50} api-rate-limit: ${LOWCODER_API_RATE_LIMIT:50} + query-timeout: ${LOWCODER_DEFAULT_QUERY_TIMEOUT:10} common: cookie-name: LOWCODER_CE_SELFHOST_TOKEN