From a31629206fcfe5cbe7ccdde17a91a945ac277679 Mon Sep 17 00:00:00 2001 From: Yuya Ebihara Date: Thu, 4 Jan 2024 11:58:48 +0900 Subject: [PATCH] Replace ActiveJDBC with JDBI for QueryHistory --- gateway-ha/pom.xml | 12 +++ .../ha/module/HaGatewayProviderModule.java | 6 +- .../ha/persistence/JdbcConnectionManager.java | 30 +++++--- .../RecordAndAnnotatedConstructorMapper.java | 43 +++++++++++ .../ha/persistence/dao/QueryHistory.java | 69 +++++------------ .../ha/persistence/dao/QueryHistoryDao.java | 55 +++++++++++++ .../ha/router/HaQueryHistoryManager.java | 77 ++++++++++--------- .../trino/gateway/ha/HaGatewayTestUtils.java | 4 +- .../trino/gateway/ha/TestTrinoResource.java | 4 +- .../ha/TestingJdbcConnectionManager.java | 4 +- .../ha/router/TestHaRoutingManager.java | 2 +- .../ha/router/TestQueryHistoryManager.java | 2 +- .../TestSpecificDbResourceGroupsManager.java | 4 +- .../TestTrinoQueueLengthRoutingTable.java | 2 +- pom.xml | 1 + 15 files changed, 208 insertions(+), 107 deletions(-) create mode 100644 gateway-ha/src/main/java/io/trino/gateway/ha/persistence/RecordAndAnnotatedConstructorMapper.java create mode 100644 gateway-ha/src/main/java/io/trino/gateway/ha/persistence/dao/QueryHistoryDao.java diff --git a/gateway-ha/pom.xml b/gateway-ha/pom.xml index 3cb238d8d..fbcf71d88 100644 --- a/gateway-ha/pom.xml +++ b/gateway-ha/pom.xml @@ -308,6 +308,18 @@ ${dep.activejdbc.version} + + org.jdbi + jdbi3-core + ${dep.jdbi.version} + + + + org.jdbi + jdbi3-sqlobject + ${dep.jdbi.version} + + org.jeasy easy-rules-core diff --git a/gateway-ha/src/main/java/io/trino/gateway/ha/module/HaGatewayProviderModule.java b/gateway-ha/src/main/java/io/trino/gateway/ha/module/HaGatewayProviderModule.java index bdb2fb0a8..b3c35ce38 100644 --- a/gateway-ha/src/main/java/io/trino/gateway/ha/module/HaGatewayProviderModule.java +++ b/gateway-ha/src/main/java/io/trino/gateway/ha/module/HaGatewayProviderModule.java @@ -56,6 +56,7 @@ import io.trino.gateway.proxyserver.ProxyHandler; import io.trino.gateway.proxyserver.ProxyServer; import io.trino.gateway.proxyserver.ProxyServerConfiguration; +import org.jdbi.v3.core.Jdbi; import java.util.ArrayList; import java.util.List; @@ -79,10 +80,11 @@ public class HaGatewayProviderModule public HaGatewayProviderModule(HaGatewayConfiguration configuration, Environment environment) { super(configuration, environment); - connectionManager = new JdbcConnectionManager(configuration.getDataStore()); + Jdbi jdbi = Jdbi.create(configuration.getDataStore().getJdbcUrl(), configuration.getDataStore().getUser(), configuration.getDataStore().getPassword()); + connectionManager = new JdbcConnectionManager(jdbi, configuration.getDataStore()); resourceGroupsManager = new HaResourceGroupsManager(connectionManager); gatewayBackendManager = new HaGatewayManager(connectionManager); - queryHistoryManager = new HaQueryHistoryManager(connectionManager); + queryHistoryManager = new HaQueryHistoryManager(jdbi); routingManager = new HaRoutingManager(gatewayBackendManager, queryHistoryManager); diff --git a/gateway-ha/src/main/java/io/trino/gateway/ha/persistence/JdbcConnectionManager.java b/gateway-ha/src/main/java/io/trino/gateway/ha/persistence/JdbcConnectionManager.java index 2fa5661d0..d014e1e6b 100644 --- a/gateway-ha/src/main/java/io/trino/gateway/ha/persistence/JdbcConnectionManager.java +++ b/gateway-ha/src/main/java/io/trino/gateway/ha/persistence/JdbcConnectionManager.java @@ -14,9 +14,11 @@ package io.trino.gateway.ha.persistence; import io.trino.gateway.ha.config.DataStoreConfiguration; -import io.trino.gateway.ha.persistence.dao.QueryHistory; +import io.trino.gateway.ha.persistence.dao.QueryHistoryDao; import jakarta.annotation.Nullable; import org.javalite.activejdbc.Base; +import org.jdbi.v3.core.Jdbi; +import org.jdbi.v3.sqlobject.SqlObjectPlugin; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -24,19 +26,31 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import static java.util.Objects.requireNonNull; + public class JdbcConnectionManager { private static final Logger log = LoggerFactory.getLogger(JdbcConnectionManager.class); + + private final Jdbi jdbi; private final DataStoreConfiguration configuration; private final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); - public JdbcConnectionManager(DataStoreConfiguration configuration) + public JdbcConnectionManager(Jdbi jdbi, DataStoreConfiguration configuration) { + this.jdbi = requireNonNull(jdbi, "jdbi is null") + .installPlugin(new SqlObjectPlugin()) + .registerRowMapper(new RecordAndAnnotatedConstructorMapper()); this.configuration = configuration; startCleanUps(); } + public Jdbi getJdbi() + { + return jdbi; + } + public void open() { this.open(null); @@ -68,16 +82,8 @@ private void startCleanUps() executorService.scheduleWithFixedDelay( () -> { log.info("Performing query history cleanup task"); - try { - this.open(); - QueryHistory.delete( - "created < ?", - System.currentTimeMillis() - TimeUnit.HOURS.toMillis( - this.configuration.getQueryHistoryHoursRetention())); - } - finally { - this.close(); - } + long created = System.currentTimeMillis() - TimeUnit.HOURS.toMillis(this.configuration.getQueryHistoryHoursRetention()); + jdbi.onDemand(QueryHistoryDao.class).deleteOldHistory(created); }, 1, 120, diff --git a/gateway-ha/src/main/java/io/trino/gateway/ha/persistence/RecordAndAnnotatedConstructorMapper.java b/gateway-ha/src/main/java/io/trino/gateway/ha/persistence/RecordAndAnnotatedConstructorMapper.java new file mode 100644 index 000000000..ad9c1e5fb --- /dev/null +++ b/gateway-ha/src/main/java/io/trino/gateway/ha/persistence/RecordAndAnnotatedConstructorMapper.java @@ -0,0 +1,43 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.trino.gateway.ha.persistence; + +import org.jdbi.v3.core.config.ConfigRegistry; +import org.jdbi.v3.core.mapper.RowMapper; +import org.jdbi.v3.core.mapper.RowMapperFactory; +import org.jdbi.v3.core.mapper.reflect.ConstructorMapper; +import org.jdbi.v3.core.mapper.reflect.JdbiConstructor; + +import java.lang.reflect.Type; +import java.util.Optional; +import java.util.stream.Stream; + +public class RecordAndAnnotatedConstructorMapper + implements RowMapperFactory +{ + @Override + public Optional> build(Type type, ConfigRegistry config) + { + if ((type instanceof Class clazz) && (clazz.isRecord() || hasJdbiConstructorMethod(clazz))) { + return ConstructorMapper.factory(clazz).build(type, config); + } + return Optional.empty(); + } + + private boolean hasJdbiConstructorMethod(Class clazz) + { + return Stream.of(clazz.getConstructors()).anyMatch(constructor -> (constructor.getAnnotation(JdbiConstructor.class) != null)) + || Stream.of(clazz.getMethods()).anyMatch(method -> (method.getAnnotation(JdbiConstructor.class) != null)); + } +} diff --git a/gateway-ha/src/main/java/io/trino/gateway/ha/persistence/dao/QueryHistory.java b/gateway-ha/src/main/java/io/trino/gateway/ha/persistence/dao/QueryHistory.java index 3d45bb470..7e0f0ce8b 100644 --- a/gateway-ha/src/main/java/io/trino/gateway/ha/persistence/dao/QueryHistory.java +++ b/gateway-ha/src/main/java/io/trino/gateway/ha/persistence/dao/QueryHistory.java @@ -13,60 +13,27 @@ */ package io.trino.gateway.ha.persistence.dao; -import io.trino.gateway.ha.router.QueryHistoryManager; -import org.javalite.activejdbc.Model; -import org.javalite.activejdbc.annotations.Cached; -import org.javalite.activejdbc.annotations.IdName; -import org.javalite.activejdbc.annotations.Table; +import org.jdbi.v3.core.mapper.reflect.ColumnName; +import org.jdbi.v3.core.mapper.reflect.JdbiConstructor; -import java.util.ArrayList; -import java.util.List; +import static java.util.Objects.requireNonNull; -@IdName("query_id") -@Table("query_history") -@Cached -public class QueryHistory - extends Model +public record QueryHistory(String queryId, String queryText, String backendUrl, String userName, String source, long created) { - private static final String queryId = "query_id"; - private static final String queryText = "query_text"; - private static final String backendUrl = "backend_url"; - private static final String userName = "user_name"; - private static final String source = "source"; - private static final String created = "created"; - - public static List upcast(List queryHistoryList) + @JdbiConstructor + public QueryHistory( + @ColumnName("query_id") String queryId, + @ColumnName("query_text") String queryText, + @ColumnName("backend_url") String backendUrl, + @ColumnName("user_name") String userName, + @ColumnName("source") String source, + @ColumnName("created") long created) { - List queryDetails = new ArrayList<>(); - for (QueryHistory dao : queryHistoryList) { - QueryHistoryManager.QueryDetail queryDetail = new QueryHistoryManager.QueryDetail(); - queryDetail.setQueryId(dao.getString(queryId)); - queryDetail.setQueryText(dao.getString(queryText)); - queryDetail.setCaptureTime(dao.getLong(created)); - queryDetail.setBackendUrl(dao.getString(backendUrl)); - queryDetail.setUser(dao.getString(userName)); - queryDetail.setSource(dao.getString(source)); - queryDetails.add(queryDetail); - } - return queryDetails; - } - - public static void create(QueryHistory model, QueryHistoryManager.QueryDetail queryDetail) - { - //Checks - String id = queryDetail.getQueryId(); - if (id == null || id.isEmpty()) { - return; - } - - model.set(queryId, id); - model.set(queryText, queryDetail.getQueryText()); - model.set(backendUrl, queryDetail.getBackendUrl()); - model.set(userName, queryDetail.getUser()); - model.set(source, queryDetail.getSource()); - model.set(created, queryDetail.getCaptureTime()); - if (!queryDetail.getQueryId().isEmpty()) { - model.insert(); - } + this.queryId = requireNonNull(queryId, "queryId is null"); + this.queryText = requireNonNull(queryText, "queryText is null"); + this.backendUrl = requireNonNull(backendUrl, "backendUrl is null"); + this.userName = requireNonNull(userName, "userName is null"); + this.source = requireNonNull(source, "source is null"); + this.created = created; } } diff --git a/gateway-ha/src/main/java/io/trino/gateway/ha/persistence/dao/QueryHistoryDao.java b/gateway-ha/src/main/java/io/trino/gateway/ha/persistence/dao/QueryHistoryDao.java new file mode 100644 index 000000000..b2bdbe7d6 --- /dev/null +++ b/gateway-ha/src/main/java/io/trino/gateway/ha/persistence/dao/QueryHistoryDao.java @@ -0,0 +1,55 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.trino.gateway.ha.persistence.dao; + +import org.jdbi.v3.sqlobject.statement.SqlQuery; +import org.jdbi.v3.sqlobject.statement.SqlUpdate; + +import java.util.List; + +public interface QueryHistoryDao +{ + @SqlQuery(""" + SELECT * FROM query_history + ORDER BY created DESC + LIMIT 2000 + """) + List findRecentQueries(); + + @SqlQuery(""" + SELECT * FROM query_history + WHERE user_name = :userName + ORDER BY created DESC + LIMIT 2000 + """) + List findRecentQueriesByUserName(String userName); + + @SqlQuery(""" + SELECT backend_url FROM query_history + WHERE query_id = :queryId + """) + String findBackendUrlByQueryId(String queryId); + + @SqlUpdate(""" + INSERT INTO query_history (query_id, query_text, backend_url, user_name, source, created) + VALUES (:queryId, :queryText, :backendUrl, :userName, :source, :created) + """) + void insertHistory(String queryId, String queryText, String backendUrl, String userName, String source, long created); + + @SqlUpdate(""" + DELETE FROM query_history + WHERE created < :created + """) + void deleteOldHistory(long created); +} diff --git a/gateway-ha/src/main/java/io/trino/gateway/ha/router/HaQueryHistoryManager.java b/gateway-ha/src/main/java/io/trino/gateway/ha/router/HaQueryHistoryManager.java index 31cd316a6..82f5760da 100644 --- a/gateway-ha/src/main/java/io/trino/gateway/ha/router/HaQueryHistoryManager.java +++ b/gateway-ha/src/main/java/io/trino/gateway/ha/router/HaQueryHistoryManager.java @@ -13,68 +13,75 @@ */ package io.trino.gateway.ha.router; -import io.trino.gateway.ha.persistence.JdbcConnectionManager; import io.trino.gateway.ha.persistence.dao.QueryHistory; +import io.trino.gateway.ha.persistence.dao.QueryHistoryDao; +import org.jdbi.v3.core.Jdbi; +import java.util.ArrayList; import java.util.List; import java.util.Optional; +import static java.util.Objects.requireNonNull; + public class HaQueryHistoryManager implements QueryHistoryManager { - private final JdbcConnectionManager connectionManager; + private final QueryHistoryDao dao; - public HaQueryHistoryManager(JdbcConnectionManager connectionManager) + public HaQueryHistoryManager(Jdbi jdbi) { - this.connectionManager = connectionManager; + dao = requireNonNull(jdbi, "jdbi is null").onDemand(QueryHistoryDao.class); } @Override public void submitQueryDetail(QueryDetail queryDetail) { - try { - connectionManager.open(); - QueryHistory dao = new QueryHistory(); - QueryHistory.create(dao, queryDetail); - } - finally { - connectionManager.close(); + String id = queryDetail.getQueryId(); + if (id == null || id.isEmpty()) { + return; } + + dao.insertHistory( + queryDetail.getQueryId(), + queryDetail.getQueryText(), + queryDetail.getBackendUrl(), + queryDetail.getUser(), + queryDetail.getSource(), + queryDetail.getCaptureTime()); } @Override public List fetchQueryHistory(Optional user) { - try { - connectionManager.open(); - String sql = "select * from query_history"; - if (user.isPresent()) { - sql += " where user_name = '" + user.orElseThrow() + "'"; - } - return QueryHistory.upcast(QueryHistory.findBySQL(String.join(" ", - sql, - "order by created desc", - "limit 2000"))); + List histories; + if (user.isPresent()) { + histories = dao.findRecentQueriesByUserName(user.orElseThrow()); } - finally { - connectionManager.close(); + else { + histories = dao.findRecentQueries(); } + return upcast(histories); + } + + private static List upcast(List queryHistoryList) + { + List queryDetails = new ArrayList<>(); + for (QueryHistory dao : queryHistoryList) { + QueryHistoryManager.QueryDetail queryDetail = new QueryHistoryManager.QueryDetail(); + queryDetail.setQueryId(dao.queryId()); + queryDetail.setQueryText(dao.queryText()); + queryDetail.setCaptureTime(dao.created()); + queryDetail.setBackendUrl(dao.backendUrl()); + queryDetail.setUser(dao.userName()); + queryDetail.setSource(dao.source()); + queryDetails.add(queryDetail); + } + return queryDetails; } @Override public String getBackendForQueryId(String queryId) { - String backend = null; - try { - connectionManager.open(); - QueryHistory queryHistory = QueryHistory.findById(queryId); - if (queryHistory != null) { - backend = queryHistory.get("backend_url").toString(); - } - } - finally { - connectionManager.close(); - } - return backend; + return dao.findBackendUrlByQueryId(queryId); } } diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/HaGatewayTestUtils.java b/gateway-ha/src/test/java/io/trino/gateway/ha/HaGatewayTestUtils.java index 978a091bd..4ba1534d8 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/HaGatewayTestUtils.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/HaGatewayTestUtils.java @@ -23,6 +23,7 @@ import okhttp3.RequestBody; import okhttp3.Response; import org.javalite.activejdbc.Base; +import org.jdbi.v3.core.Jdbi; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -49,7 +50,8 @@ public static void seedRequiredData(TestConfig testConfig) { String jdbcUrl = "jdbc:h2:" + testConfig.h2DbFilePath(); DataStoreConfiguration db = new DataStoreConfiguration(jdbcUrl, "sa", "sa", "org.h2.Driver", 4); - JdbcConnectionManager connectionManager = new JdbcConnectionManager(db); + Jdbi jdbi = Jdbi.create(jdbcUrl, "sa", "sa"); + JdbcConnectionManager connectionManager = new JdbcConnectionManager(jdbi, db); connectionManager.open(); Base.exec(HaGatewayTestUtils.getResourceFileContent("gateway-ha-persistence.sql")); connectionManager.close(); diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/TestTrinoResource.java b/gateway-ha/src/test/java/io/trino/gateway/ha/TestTrinoResource.java index 064501444..1a7397704 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/TestTrinoResource.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/TestTrinoResource.java @@ -23,6 +23,7 @@ import okhttp3.RequestBody; import okhttp3.Response; import org.eclipse.jetty.http.HttpStatus; +import org.jdbi.v3.core.Jdbi; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; @@ -60,7 +61,8 @@ public void setup() // Setup resource group manager String jdbcUrl = "jdbc:h2:" + testConfig.h2DbFilePath(); DataStoreConfiguration db = new DataStoreConfiguration(jdbcUrl, "sa", "sa", "org.h2.Driver", 4); - connectionManager = new JdbcConnectionManager(db); + Jdbi jdbi = Jdbi.create(jdbcUrl, "sa", "sa"); + connectionManager = new JdbcConnectionManager(jdbi, db); resourceGroupManager = new HaResourceGroupsManager(connectionManager); // Generate test data diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/TestingJdbcConnectionManager.java b/gateway-ha/src/test/java/io/trino/gateway/ha/TestingJdbcConnectionManager.java index 1f7eddd52..d4b36cc0a 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/TestingJdbcConnectionManager.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/TestingJdbcConnectionManager.java @@ -15,6 +15,7 @@ import io.trino.gateway.ha.config.DataStoreConfiguration; import io.trino.gateway.ha.persistence.JdbcConnectionManager; +import org.jdbi.v3.core.Jdbi; import java.io.File; @@ -30,6 +31,7 @@ public static JdbcConnectionManager createTestingJdbcConnectionManager() String jdbcUrl = "jdbc:h2:" + tempH2DbDir.getAbsolutePath(); HaGatewayTestUtils.seedRequiredData(new HaGatewayTestUtils.TestConfig("", tempH2DbDir.getAbsolutePath())); DataStoreConfiguration db = new DataStoreConfiguration(jdbcUrl, "sa", "sa", "org.h2.Driver", 4); - return new JdbcConnectionManager(db); + Jdbi jdbi = Jdbi.create(jdbcUrl, "sa", "sa"); + return new JdbcConnectionManager(jdbi, db); } } diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestHaRoutingManager.java b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestHaRoutingManager.java index dafff1a50..8b2f5d831 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestHaRoutingManager.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestHaRoutingManager.java @@ -35,7 +35,7 @@ public void setUp() { JdbcConnectionManager connectionManager = createTestingJdbcConnectionManager(); backendManager = new HaGatewayManager(connectionManager); - historyManager = new HaQueryHistoryManager(connectionManager); + historyManager = new HaQueryHistoryManager(connectionManager.getJdbi()); haRoutingManager = new HaRoutingManager(backendManager, historyManager); } diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestQueryHistoryManager.java b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestQueryHistoryManager.java index a08b68989..cb18c323d 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestQueryHistoryManager.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestQueryHistoryManager.java @@ -34,7 +34,7 @@ public class TestQueryHistoryManager public void setUp() { JdbcConnectionManager connectionManager = createTestingJdbcConnectionManager(); - queryHistoryManager = new HaQueryHistoryManager(connectionManager); + queryHistoryManager = new HaQueryHistoryManager(connectionManager.getJdbi()); } @Test diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestSpecificDbResourceGroupsManager.java b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestSpecificDbResourceGroupsManager.java index b5fe4515f..aa89acc39 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestSpecificDbResourceGroupsManager.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestSpecificDbResourceGroupsManager.java @@ -16,6 +16,7 @@ import io.trino.gateway.ha.HaGatewayTestUtils; import io.trino.gateway.ha.config.DataStoreConfiguration; import io.trino.gateway.ha.persistence.JdbcConnectionManager; +import org.jdbi.v3.core.Jdbi; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; @@ -47,7 +48,8 @@ public void setUp() new HaGatewayTestUtils.TestConfig("", tempH2DbDir.getAbsolutePath())); DataStoreConfiguration db = new DataStoreConfiguration(jdbcUrl, "sa", "sa", "org.h2.Driver", 4); - JdbcConnectionManager connectionManager = new JdbcConnectionManager(db); + Jdbi jdbi = Jdbi.create(jdbcUrl); + JdbcConnectionManager connectionManager = new JdbcConnectionManager(jdbi, db); super.resourceGroupManager = new HaResourceGroupsManager(connectionManager); } diff --git a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestTrinoQueueLengthRoutingTable.java b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestTrinoQueueLengthRoutingTable.java index 0382179e9..2fb902c2f 100644 --- a/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestTrinoQueueLengthRoutingTable.java +++ b/gateway-ha/src/test/java/io/trino/gateway/ha/router/TestTrinoQueueLengthRoutingTable.java @@ -57,7 +57,7 @@ public void setUp() { JdbcConnectionManager connectionManager = createTestingJdbcConnectionManager(); backendManager = new HaGatewayManager(connectionManager); - historyManager = new HaQueryHistoryManager(connectionManager); + historyManager = new HaQueryHistoryManager(connectionManager.getJdbi()); routingTable = new TrinoQueueLengthRoutingTable(backendManager, historyManager); for (String grp : mockRoutingGroups) { diff --git a/pom.xml b/pom.xml index 60ce97efb..09308d8fe 100644 --- a/pom.xml +++ b/pom.xml @@ -56,6 +56,7 @@ 1.4.192 2.1.1 2.0.0 + 3.44.0 4.1.0 5.8.0 8.0.33