fix: bound DDS connection timeouts

This commit is contained in:
devmrko
2026-06-29 21:27:05 +09:00
parent c4968a0313
commit 1aaffb6247

View File

@@ -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,