From 1aaffb6247e06ad918bf1f15f8a45ab9adf9a5db Mon Sep 17 00:00:00 2001 From: devmrko Date: Mon, 29 Jun 2026 21:27:05 +0900 Subject: [PATCH] fix: bound DDS connection timeouts --- .../ddsbackoffice/service/DdsQueryService.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/dds-backoffice/src/main/java/com/cloudhandson/ddsbackoffice/service/DdsQueryService.java b/dds-backoffice/src/main/java/com/cloudhandson/ddsbackoffice/service/DdsQueryService.java index 36d1a5a..ff56a69 100644 --- a/dds-backoffice/src/main/java/com/cloudhandson/ddsbackoffice/service/DdsQueryService.java +++ b/dds-backoffice/src/main/java/com/cloudhandson/ddsbackoffice/service/DdsQueryService.java @@ -15,6 +15,7 @@ import java.time.Duration; import java.util.List; import java.util.Locale; import java.util.Objects; +import java.util.Properties; import java.util.regex.Pattern; import org.springframework.stereotype.Service; @@ -82,10 +83,14 @@ public class DdsQueryService { var limit = Math.max(1, Math.min(requestedLimit, 100)); var search = searchText == null ? "" : searchText.trim(); - try (Connection connection = DriverManager.getConnection( - properties.dbUrl(), user.username(), user.password())) { + var timeoutSeconds = timeoutSeconds(properties.queryTimeout()); + var connectionProperties = new Properties(); + connectionProperties.setProperty("user", user.username()); + connectionProperties.setProperty("password", user.password()); + connectionProperties.setProperty("oracle.net.CONNECT_TIMEOUT", String.valueOf(timeoutSeconds * 1000)); + connectionProperties.setProperty("oracle.jdbc.ReadTimeout", String.valueOf(timeoutSeconds * 1000)); + try (Connection connection = DriverManager.getConnection(properties.dbUrl(), connectionProperties)) { connection.setReadOnly(true); - var timeoutSeconds = timeoutSeconds(properties.queryTimeout()); var sessionUser = readSingleValue(connection, "SELECT SYS_CONTEXT('USERENV', 'SESSION_USER') FROM dual", timeoutSeconds); var endUser = readSingleValue(connection,