Skip to content

Commit 0c9f581

Browse files
authored
[#6630] fix(jdbc-catalog): jdbc.pool.test-on-borrow does not work when connecting to JDBC catalog (#6639)
<!-- 1. Title: [#<issue>] <type>(<scope>): <subject> Examples: - "[#123] feat(operator): support xxx" - "[#233] fix: check null before access result in xxx" - "[MINOR] refactor: fix typo in variable name" - "[MINOR] docs: fix typo in README" - "[#255] test: fix flaky test NameOfTheTest" Reference: https://www.conventionalcommits.org/en/v1.0.0/ 2. If the PR is unfinished, please mark this PR as draft. --> ### What changes were proposed in this pull request? jdbc.pool.test-on-borrow does not work when connecting to JDBC catalog ### Why are the changes needed? Fix: #6630 ### Does this PR introduce _any_ user-facing change? N/A ### How was this patch tested? N/A
1 parent 0616fbc commit 0c9f581

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

catalogs/catalog-jdbc-common/src/main/java/org/apache/gravitino/catalog/jdbc/JdbcCatalogPropertiesMetadata.java

+11-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
package org.apache.gravitino.catalog.jdbc;
2020

21+
import static org.apache.gravitino.connector.PropertyEntry.booleanPropertyEntry;
2122
import static org.apache.gravitino.connector.PropertyEntry.integerPropertyEntry;
2223
import static org.apache.gravitino.connector.PropertyEntry.stringOptionalPropertyEntry;
2324
import static org.apache.gravitino.connector.PropertyEntry.stringPropertyEntry;
@@ -42,7 +43,8 @@ public class JdbcCatalogPropertiesMetadata extends BaseCatalogPropertiesMetadata
4243
JdbcConfig.USERNAME.getKey(),
4344
JdbcConfig.PASSWORD.getKey(),
4445
JdbcConfig.POOL_MIN_SIZE.getKey(),
45-
JdbcConfig.POOL_MAX_SIZE.getKey());
46+
JdbcConfig.POOL_MAX_SIZE.getKey(),
47+
JdbcConfig.TEST_ON_BORROW.getKey());
4648

4749
static {
4850
List<PropertyEntry<?>> propertyEntries =
@@ -100,6 +102,14 @@ public class JdbcCatalogPropertiesMetadata extends BaseCatalogPropertiesMetadata
100102
false /* immutable */,
101103
JdbcConfig.POOL_MAX_SIZE.getDefaultValue(),
102104
true /* hidden */,
105+
false /* reserved */),
106+
booleanPropertyEntry(
107+
JdbcConfig.TEST_ON_BORROW.getKey(),
108+
JdbcConfig.TEST_ON_BORROW.getDoc(),
109+
false /* required */,
110+
false /* immutable */,
111+
JdbcConfig.TEST_ON_BORROW.getDefaultValue(),
112+
true /* hidden */,
103113
false /* reserved */));
104114
PROPERTIES_METADATA =
105115
ImmutableMap.<String, PropertyEntry<?>>builder()

catalogs/catalog-jdbc-common/src/test/java/org/apache/gravitino/catalog/jdbc/TestJdbcCatalogOperations.java

+23
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,20 @@
1919
package org.apache.gravitino.catalog.jdbc;
2020

2121
import com.google.common.collect.ImmutableMap;
22+
import com.google.common.collect.Maps;
23+
import java.sql.SQLException;
24+
import java.util.HashMap;
25+
import javax.sql.DataSource;
26+
import org.apache.commons.dbcp2.BasicDataSource;
2227
import org.apache.gravitino.Catalog;
2328
import org.apache.gravitino.NameIdentifier;
29+
import org.apache.gravitino.catalog.jdbc.config.JdbcConfig;
2430
import org.apache.gravitino.catalog.jdbc.converter.SqliteColumnDefaultValueConverter;
2531
import org.apache.gravitino.catalog.jdbc.converter.SqliteExceptionConverter;
2632
import org.apache.gravitino.catalog.jdbc.converter.SqliteTypeConverter;
2733
import org.apache.gravitino.catalog.jdbc.operation.SqliteDatabaseOperations;
2834
import org.apache.gravitino.catalog.jdbc.operation.SqliteTableOperations;
35+
import org.apache.gravitino.catalog.jdbc.utils.DataSourceUtils;
2936
import org.apache.gravitino.exceptions.GravitinoRuntimeException;
3037
import org.junit.jupiter.api.Assertions;
3138
import org.junit.jupiter.api.Test;
@@ -51,4 +58,20 @@ public void testTestConnection() {
5158
"comment",
5259
ImmutableMap.of()));
5360
}
61+
62+
@Test
63+
public void testConfigTestOnBorrow() throws SQLException {
64+
HashMap<String, String> properties = Maps.newHashMap();
65+
properties.put(JdbcConfig.JDBC_DRIVER.getKey(), "org.sqlite.JDBC");
66+
properties.put(JdbcConfig.JDBC_URL.getKey(), "jdbc:sqlite::memory:");
67+
properties.put(JdbcConfig.USERNAME.getKey(), "test");
68+
properties.put(JdbcConfig.PASSWORD.getKey(), "test");
69+
properties.put(JdbcConfig.TEST_ON_BORROW.getKey(), "false");
70+
71+
DataSource dataSource =
72+
Assertions.assertDoesNotThrow(() -> DataSourceUtils.createDataSource(properties));
73+
Assertions.assertTrue(dataSource instanceof org.apache.commons.dbcp2.BasicDataSource);
74+
Assertions.assertTrue(((BasicDataSource) dataSource).getTestOnBorrow() == false);
75+
((BasicDataSource) dataSource).close();
76+
}
5477
}

0 commit comments

Comments
 (0)