Skip to content

Commit 6a8be1b

Browse files
committed
Use hikari for DB connection
1 parent 57e4552 commit 6a8be1b

File tree

2 files changed

+16
-15
lines changed

2 files changed

+16
-15
lines changed

src/main/java/eu/openanalytics/containerproxy/stat/StatCollectorRegistry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ private IStatCollector findCollector(String baseURL) {
7777
if (baseURL.toLowerCase().contains("/write?db=")) {
7878
return new InfluxDBCollector();
7979
} else if (baseURL.toLowerCase().startsWith("jdbc")) {
80-
return new JDBCCollector();
80+
return new JDBCCollector(environment);
8181
}
8282
return null;
8383
}

src/main/java/eu/openanalytics/containerproxy/stat/impl/JDBCCollector.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929

3030
import org.springframework.core.env.Environment;
3131

32+
import com.zaxxer.hikari.HikariDataSource;
33+
3234
import eu.openanalytics.containerproxy.service.EventService.Event;
3335
import eu.openanalytics.containerproxy.stat.IStatCollector;
3436

@@ -56,24 +58,23 @@
5658
*/
5759
public class JDBCCollector implements IStatCollector {
5860

59-
private Connection conn;
61+
private HikariDataSource ds;
62+
63+
public JDBCCollector(Environment environment) {
64+
String baseURL = environment.getProperty("proxy.usage-stats-url");
65+
String username = environment.getProperty("proxy.usage-stats-username", "monetdb");
66+
String password = environment.getProperty("proxy.usage-stats-password", "monetdb");
67+
ds = new HikariDataSource();
68+
ds.setJdbcUrl(baseURL);
69+
ds.setUsername(username);
70+
ds.setPassword(password);
71+
}
72+
6073

6174
@Override
6275
public void accept(Event event, Environment env) throws IOException {
63-
synchronized (this) {
64-
String baseURL = env.getProperty("proxy.usage-stats-url");
65-
String username = env.getProperty("proxy.usage-stats-username", "monetdb");
66-
String password = env.getProperty("proxy.usage-stats-password", "monetdb");
67-
try {
68-
if (conn == null || conn.isClosed()) {
69-
conn = DriverManager.getConnection(baseURL, username, password);
70-
}
71-
} catch (SQLException e) {
72-
throw new IOException("Failed to connect to " + baseURL, e);
73-
}
74-
}
7576
String sql = "INSERT INTO event(event_time, username, type, data) VALUES (?,?,?,?)";
76-
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
77+
try (PreparedStatement stmt = ds.getConnection().prepareStatement(sql)) {
7778
stmt.setTimestamp(1, new Timestamp(System.currentTimeMillis()));
7879
stmt.setString(2, event.user);
7980
stmt.setString(3, event.type);

0 commit comments

Comments
 (0)