Skip to content

Commit

Permalink
new-repo: added config options for keepaliveTime+leakDetectionThreshold
Browse files Browse the repository at this point in the history
Both are directly passed to HikariCP if set. Old repo doesn't use it.
  • Loading branch information
virgo47 committed Oct 21, 2021
1 parent 031c2ed commit edf5879
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,13 @@ public class SqaleRepositoryConfiguration implements JdbcRepositoryConfiguration

private String driverClassName;

private long initializationFailTimeout;
private int minPoolSize;
private int maxPoolSize;
private Long maxLifetime;
private Long idleTimeout;
private long initializationFailTimeout;
private Long keepaliveTime;
private Long leakDetectionThreshold;

private String fullObjectFormat;

Expand Down Expand Up @@ -114,6 +116,10 @@ public void init() throws RepositoryServiceFactoryException {
minPoolSize = configuration.getInt(PROPERTY_MIN_POOL_SIZE, Math.min(DEFAULT_MIN_POOL_SIZE, maxPoolSize));
maxLifetime = configuration.getLong(PROPERTY_MAX_LIFETIME, null);
idleTimeout = configuration.getLong(PROPERTY_IDLE_TIMEOUT, null);
keepaliveTime = configuration.getLong(PROPERTY_KEEPALIVE_TIME, null);
// 0 to disable, which is also HikariCP default
leakDetectionThreshold = configuration.getLong(PROPERTY_LEAK_DETECTION_THRESHOLD, null);
// 1ms is also HikariCP default, we use "long" for it so it must be set
initializationFailTimeout = configuration.getLong(PROPERTY_INITIALIZATION_FAIL_TIMEOUT, 1L);

fullObjectFormat = configuration.getString(PROPERTY_FULL_OBJECT_FORMAT, DEFAULT_FULL_OBJECT_FORMAT)
Expand Down Expand Up @@ -251,6 +257,16 @@ public long getInitializationFailTimeout() {
return initializationFailTimeout;
}

@Override
public Long getKeepaliveTime() {
return keepaliveTime;
}

@Override
public Long getLeakDetectionThreshold() {
return leakDetectionThreshold;
}

@Override
public String getPerformanceStatisticsFile() {
return performanceStatisticsFile;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,15 @@ private HikariConfig createHikariConfig(String applicationName) {
if (configuration.getMaxLifetime() != null) {
config.setMaxLifetime(configuration.getMaxLifetime());
}

if (configuration.getIdleTimeout() != null) {
config.setIdleTimeout(configuration.getIdleTimeout());
}
if (configuration.getKeepaliveTime() != null) {
config.setKeepaliveTime(configuration.getKeepaliveTime());
}
if (configuration.getLeakDetectionThreshold() != null) {
config.setLeakDetectionThreshold(configuration.getLeakDetectionThreshold());
}

config.setIsolateInternalQueries(true);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ public interface JdbcRepositoryConfiguration {
String PROPERTY_MAX_POOL_SIZE = "maxPoolSize";
String PROPERTY_MAX_LIFETIME = "maxLifetime";
String PROPERTY_IDLE_TIMEOUT = "idleTimeout";
String PROPERTY_KEEPALIVE_TIME = "keepaliveTime";
String PROPERTY_LEAK_DETECTION_THRESHOLD = "leakDetectionThreshold";
String PROPERTY_INITIALIZATION_FAIL_TIMEOUT = "initializationFailTimeout";

String PROPERTY_USE_ZIP = "useZip";
Expand Down Expand Up @@ -76,12 +78,19 @@ default String getReadOnlyTransactionStatement() {
return null;
}

// For HikariCP config see: https://github.com/brettwooldridge/HikariCP#gear-configuration-knobs-baby
// All times are in ms.
long getInitializationFailTimeout();

int getMinPoolSize();
int getMaxPoolSize();
Long getMaxLifetime();
Long getIdleTimeout();
default Long getKeepaliveTime() {
return null;
}
default Long getLeakDetectionThreshold() {
return null;
}

boolean isUseZip();
boolean isUseZipAudit();
Expand Down

0 comments on commit edf5879

Please sign in to comment.