From e6fb109f7b2b54af96c7dba96d7a683e36e695c9 Mon Sep 17 00:00:00 2001
From: Josiah Noel <32279667+SentryMan@users.noreply.github.com>
Date: Wed, 28 May 2025 12:45:39 -0400
Subject: [PATCH] [avaje-jex] tweak hikari settings
---
frameworks/Java/avaje-jex/pom.xml | 2 +-
.../benchmark/repository/HikariFactory.java | 20 ++++++++++++++++---
.../benchmark/repository/JDBCDbService.java | 6 ++----
.../src/main/resources/application.properties | 2 +-
.../src/main/resources/hikari.properties | 2 +-
5 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/frameworks/Java/avaje-jex/pom.xml b/frameworks/Java/avaje-jex/pom.xml
index acca218c0c6..39e68f6f800 100644
--- a/frameworks/Java/avaje-jex/pom.xml
+++ b/frameworks/Java/avaje-jex/pom.xml
@@ -58,7 +58,7 @@
org.postgresql
postgresql
- 42.7.5
+ 42.7.6
diff --git a/frameworks/Java/avaje-jex/src/main/java/benchmark/repository/HikariFactory.java b/frameworks/Java/avaje-jex/src/main/java/benchmark/repository/HikariFactory.java
index 6b38d6f14a2..bcd9e24a1dd 100644
--- a/frameworks/Java/avaje-jex/src/main/java/benchmark/repository/HikariFactory.java
+++ b/frameworks/Java/avaje-jex/src/main/java/benchmark/repository/HikariFactory.java
@@ -5,6 +5,7 @@
import io.avaje.config.Config;
import io.avaje.inject.Bean;
import io.avaje.inject.Factory;
+import java.util.concurrent.Executors;
import javax.sql.DataSource;
@Factory
@@ -22,8 +23,21 @@ DataSource dataSource() {
maxPoolSize = Config.getInt("postgresDefaultPoolSize");
}
- var hikari = new HikariDataSource(new HikariConfig("hikari.properties"));
- hikari.setMaximumPoolSize(maxPoolSize);
- return hikari;
+ maxPoolSize = Math.max(maxPoolSize, Runtime.getRuntime().availableProcessors() * 2);
+ HikariConfig hikariConfig = new HikariConfig("hikari.properties");
+
+ var vtThreadFactory = Thread.ofVirtual().factory();
+ hikariConfig.setThreadFactory(vtThreadFactory);
+ hikariConfig.setScheduledExecutor(
+ Executors.newScheduledThreadPool(maxPoolSize, vtThreadFactory));
+
+ // data source properties
+ hikariConfig.addDataSourceProperty("cachePrepStmts", "true");
+ hikariConfig.addDataSourceProperty("prepStmtCacheSize", "250");
+ hikariConfig.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
+ hikariConfig.addDataSourceProperty("ssl", "false");
+ hikariConfig.addDataSourceProperty("tcpKeepAlive", "true");
+ hikariConfig.setMaximumPoolSize(maxPoolSize);
+ return new HikariDataSource(hikariConfig);
}
}
diff --git a/frameworks/Java/avaje-jex/src/main/java/benchmark/repository/JDBCDbService.java b/frameworks/Java/avaje-jex/src/main/java/benchmark/repository/JDBCDbService.java
index a4d790d717d..8cf49d5223a 100644
--- a/frameworks/Java/avaje-jex/src/main/java/benchmark/repository/JDBCDbService.java
+++ b/frameworks/Java/avaje-jex/src/main/java/benchmark/repository/JDBCDbService.java
@@ -22,7 +22,7 @@ public JDBCDbService(DataSource connectionFactory) {
}
@Override
- public List getWorld(int num) {
+ public List getWorld(int num) throws SQLException {
String select = "select id, randomNumber from World where id = ?";
List worldList = new ArrayList<>();
@@ -37,8 +37,6 @@ public List getWorld(int num) {
worldList.add(new World(rs.getInt("id"), rs.getInt("randomNumber")));
}
}
- } catch (SQLException e) {
- throw new RuntimeException(e);
}
return worldList;
@@ -55,7 +53,7 @@ public List getFortune() throws SQLException {
ResultSet rs = pstm.executeQuery()) {
while (rs.next()) {
- fortuneList.add(new Fortune(rs.getInt("id"), rs.getString("message")));
+ fortuneList.add(new Fortune(rs.getInt(1), rs.getString(2)));
}
fortuneList.add(new Fortune(defaultFortuneId, defaultFortuneMessage));
}
diff --git a/frameworks/Java/avaje-jex/src/main/resources/application.properties b/frameworks/Java/avaje-jex/src/main/resources/application.properties
index 804296ecc89..5976084e167 100644
--- a/frameworks/Java/avaje-jex/src/main/resources/application.properties
+++ b/frameworks/Java/avaje-jex/src/main/resources/application.properties
@@ -1,6 +1,6 @@
physicalTag=Citrine
cloudTag=Azure
-postgresPhysicalPoolSize=56
+postgresPhysicalPoolSize=64
postgresCloudPoolSize=16
postgresDefaultPoolSize=10
\ No newline at end of file
diff --git a/frameworks/Java/avaje-jex/src/main/resources/hikari.properties b/frameworks/Java/avaje-jex/src/main/resources/hikari.properties
index f859c5a8763..85001e992ba 100644
--- a/frameworks/Java/avaje-jex/src/main/resources/hikari.properties
+++ b/frameworks/Java/avaje-jex/src/main/resources/hikari.properties
@@ -1,4 +1,4 @@
-dataSourceClassName=org.postgresql.ds.PGSimpleDataSource
+jdbcUrl=jdbc:postgresql://tfb-database:5432/hello_world
dataSource.serverName=tfb-database
dataSource.portNumber=5432
dataSource.user=benchmarkdbuser