Skip to content

Commit c5a13a8

Browse files
committed
feat: use HikariCP instead of commons-dbcp2 for connection pooling
1 parent 975e51c commit c5a13a8

11 files changed

Lines changed: 144 additions & 97 deletions

File tree

bin/testfiles/JDBC_TESTS.jmx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
99
<collectionProp name="Arguments.arguments"/>
1010
</elementProp>
11-
<stringProp name="TestPlan.user_define_classpath">../lib/opt/hsqldb-2.4.0.jar</stringProp>
11+
<stringProp name="TestPlan.user_define_classpath">../lib/opt/hsqldb-2.7.4.jar</stringProp>
1212
</TestPlan>
1313
<hashTree>
1414
<JDBCDataSource guiclass="TestBeanGUI" testclass="JDBCDataSource" testname="JDBC Connection Configuration" enabled="true">

gradle/verification-keyring.keys

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6813,6 +6813,34 @@ Dw==
68136813
=QOGP
68146814
-----END PGP PUBLIC KEY BLOCK-----
68156815

6816+
pub 4CC08E7F47C3EC76
6817+
uid Brett Wooldridge (Sonatype) <brett.wooldridge@gmail.com>
6818+
6819+
sub 4D3FB07DD9F19B56
6820+
-----BEGIN PGP PUBLIC KEY BLOCK-----
6821+
6822+
mQENBFI4+QsBCAC1+xCdhXj0MuViNA21Pno8bHunP0UIZQmC9BNl7dVuUC8/rg9V
6823+
1dlZyXF8SNycOKqT461m41H5VNBmwt64OIuJiUcUreVSs07iLzpn8mQPwyTaRZYd
6824+
YlZns5V/3ukfGYUVCWScMdc8WaJwTVxfRwNhnJ2/QbAcIZDypwAd0P03ofpvnt/8
6825+
YqvVyzpJqNTDLFjLpEcditVn4EioVVMcvUu4YVwmUSdBjrMLp0xC8PvbyWiw4dCA
6826+
T4C2zFycrr4M2legiZv/N6Tw0fPRE/EALYtIhgLSeqx5Pg9ku/KA6zMraFovnMDM
6827+
haJ9+ZsCPxd9JaJ021C9I7EXDA+W5t+DPODDABEBAAG0OEJyZXR0IFdvb2xkcmlk
6828+
Z2UgKFNvbmF0eXBlKSA8YnJldHQud29vbGRyaWRnZUBnbWFpbC5jb20+uQENBFI4
6829+
+QsBCAD0Xrq6nXmqubsB+XdgLof14wH7UIw693FUUndKcK+LVaMe7dP8F1Emkorf
6830+
YvwTOKQy6L+rUOm23MHuxxwB+msIpMX3WCzFGSq1WjYPd6wVj47yP/wqqhIqQO3q
6831+
tUeOVlyTwy8KccrAkXpDjkTlZ0cVP2lqNo6gRTypkvmHYgLYzNNV1GJm+v+t4sm4
6832+
jMepvKLl11/gUNLHx2VpL37w1i6Mm53iiW2GXGin1gPSWB3FtspMLAQdE2Xk0yRk
6833+
s+eUJ5e8oj3eJD5w4b3fqsWFCmK8q+/5uPK3Po2xe1oSmpHBm38MFUAxErtabNrB
6834+
EioSC5wNER0DhB4gEKVUXLyIDXUDABEBAAGJAR8EGAECAAkFAlI4+QsCGwwACgkQ
6835+
TMCOf0fD7HYHrgf9F4p3sWyNApGF8V1GEQEyGUPtfxNd0N1Jzd10MCh470fiBjaQ
6836+
IebkCEhneiNBAOWK52HxAlWRINAAa7fVJ8XpmzTbTLDLL1ZrEI//21ZQ3gUxCRgr
6837+
shy7lEV1fNJTuZadBbOU/+1L2Bbz9zu7Vju+9DU5sr3c5Byu/E+l/o1i/DvymoFA
6838+
OOepAO4IxpEV/ma4d8KYaWhSSb7UgwMjAkPt3YsnxQAnNbApZenVo+NLO+2XRAbd
6839+
BzEtRoazqYje0BzSewiTyXruVKK7Ineo6tRWyOMvdYhnoz5EZejp3gkaBmE4U0aa
6840+
qOSJ1UKXf8amAyQGcdIzRNx+3apFHn0h2yaMug==
6841+
=mIr1
6842+
-----END PGP PUBLIC KEY BLOCK-----
6843+
68166844
pub 4E066E0459CD109B
68176845
uid Henri Biestro (CODE SIGNING KEY) <henrib@apache.org>
68186846

gradle/verification-metadata.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,7 @@
294294
<trusting group="^org[.]eclipse[.]jetty($|([.].*))" regex="true"/>
295295
</trusted-key>
296296
<trusted-key id="F3184BCD55F4D016E30D4C9BF42E87F9665015C9" group="org.jsoup"/>
297+
<trusted-key id="F3A90E6B10E809F851AB4FC54CC08E7F47C3EC76" group="com.zaxxer" name="HikariCP" version="7.0.2"/>
297298
<trusted-key id="F5FEBA84EB26C56457B2CF819E31AB27445478DB" group="org.infinispan"/>
298299
<trusted-key id="FA77DCFEF2EE6EB2DEBEDD2C012579464D01C06A">
299300
<trusting group="org.apache"/>

lib/aareadme.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -244,10 +244,6 @@ tika-1.21
244244
http://tika.apache.org/
245245
- Regular Expression Extractor
246246

247-
commons-dbcp2-2.5.0 (org.apache.commons.dbcp2)
248-
--------------------------
249-
- DataSourceElement (JDBC)
250-
251247
Saxon-HE-9.9.1-5 (net.sf.saxon)
252248
--------------------------
253249
- XPath2Extractor (XML)

src/bom-thirdparty/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ dependencies {
5959
api("com.miglayout:miglayout-swing:5.3")
6060
api("com.sun.activation:javax.activation:1.2.0")
6161
api("com.thoughtworks.xstream:xstream:1.4.21")
62+
api("com.zaxxer:HikariCP:7.0.2")
6263
api("commons-codec:commons-codec:1.19.0")
6364
api("commons-collections:commons-collections:3.2.2")
6465
api("commons-io:commons-io:2.20.0")
@@ -90,7 +91,6 @@ dependencies {
9091
api("net.sf.saxon:Saxon-HE:12.9")
9192
api("org.apache-extras.beanshell:bsh:2.0b6")
9293
api("org.apache.commons:commons-collections4:4.5.0")
93-
api("org.apache.commons:commons-dbcp2:2.9.0")
9494
api("org.apache.commons:commons-jexl3:3.5.0")
9595
api("org.apache.commons:commons-jexl:2.1.1")
9696
api("org.apache.commons:commons-lang3:3.19.0") {

src/dist-check/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ dependencies {
4444

4545
extraTestDependencies(platform(projects.src.bomThirdparty))
4646
extraTestDependencies(platform(projects.src.bomTesting))
47-
extraTestDependencies("org.hsqldb:hsqldb::jdk8")
47+
extraTestDependencies("org.hsqldb:hsqldb")
4848
extraTestDependencies("org.apache.mina:mina-core")
4949
extraTestDependencies("org.apache.ftpserver:ftplet-api")
5050
extraTestDependencies("org.apache.ftpserver:ftpserver-core")

src/dist/src/dist/expected_release_jars.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
223993,groovy-xml-5.0.2.jar
7070
126373,hamcrest-3.0.jar
7171
2403,hamcrest-core-3.0.jar
72+
172312,HikariCP-7.0.2.jar
7273
181512,httpasyncclient-4.1.5.jar
7374
785639,httpclient-4.5.14.jar
7475
327891,httpcore-4.4.16.jar

src/protocol/jdbc/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ plugins {
2222
dependencies {
2323
api(projects.src.core)
2424

25-
implementation("org.apache.commons:commons-dbcp2")
25+
implementation("com.zaxxer:HikariCP")
2626
implementation("commons-io:commons-io") {
2727
because("IOUtils")
2828
}

src/protocol/jdbc/src/main/java/org/apache/jmeter/protocol/jdbc/AbstractJDBCTestElement.java

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -168,13 +168,11 @@ protected byte[] execute(Connection conn, SampleResult sample) throws SQLExcepti
168168
try (Statement stmt = conn.createStatement()) {
169169
setQueryTimeout(stmt, getIntegerQueryTimeout());
170170
configureMaxRows(stmt);
171-
ResultSet rs = null;
172-
try {
173-
rs = stmt.executeQuery(getQuery());
171+
try (ResultSet rs = stmt.executeQuery(getQuery())) {
174172
sample.latencyEnd();
175173
return getStringFromResultSet(rs).getBytes(ENCODING);
176174
} finally {
177-
close(rs);
175+
commitTransaction(conn);
178176
}
179177
}
180178
} else if (CALLABLE.equals(currentQueryType)) {
@@ -186,6 +184,8 @@ protected byte[] execute(Connection conn, SampleResult sample) throws SQLExcepti
186184
sample.latencyEnd();
187185
String sb = resultSetsToString(cstmt,hasResultSet, out);
188186
return sb.getBytes(ENCODING);
187+
} finally {
188+
commitTransaction(conn);
189189
}
190190
} else if (UPDATE.equals(currentQueryType)) {
191191
try (Statement stmt = conn.createStatement()) {
@@ -195,18 +195,18 @@ protected byte[] execute(Connection conn, SampleResult sample) throws SQLExcepti
195195
int updateCount = stmt.getUpdateCount();
196196
String results = updateCount + " updates";
197197
return results.getBytes(ENCODING);
198+
} finally {
199+
commitTransaction(conn);
198200
}
199201
} else if (PREPARED_SELECT.equals(currentQueryType)) {
200202
try (PreparedStatement pstmt = getPreparedStatement(conn)) {
201203
setArguments(pstmt);
202204
configureMaxRows(pstmt);
203-
ResultSet rs = null;
204-
try {
205-
rs = pstmt.executeQuery();
205+
try (ResultSet rs = pstmt.executeQuery()) {
206206
sample.latencyEnd();
207207
return getStringFromResultSet(rs).getBytes(ENCODING);
208208
} finally {
209-
close(rs);
209+
commitTransaction(conn);
210210
}
211211
}
212212
} else if (PREPARED_UPDATE.equals(currentQueryType)) {
@@ -216,6 +216,8 @@ protected byte[] execute(Connection conn, SampleResult sample) throws SQLExcepti
216216
sample.latencyEnd();
217217
String sb = resultSetsToString(pstmt,false,null);
218218
return sb.getBytes(ENCODING);
219+
} finally {
220+
commitTransaction(conn);
219221
}
220222
} else if (ROLLBACK.equals(currentQueryType)){
221223
conn.rollback();
@@ -238,6 +240,13 @@ protected byte[] execute(Connection conn, SampleResult sample) throws SQLExcepti
238240
}
239241
}
240242

243+
private static void commitTransaction(Connection conn) throws SQLException {
244+
if (!conn.getAutoCommit()) {
245+
// HikariCP rollsback the transaction when a dirty connection returns back to the pool, so we commit it explicitly
246+
conn.commit();
247+
}
248+
}
249+
241250
private void configureMaxRows(Statement stmt) throws SQLException {
242251
int maxRows = getIntegerResultSetMaxRows();
243252
if (maxRows >= 0) {

0 commit comments

Comments
 (0)