Merge branch 'stable-2.12' into stable-2.13

* stable-2.12:
  Fix DB connection pool verification

Change-Id: Ia1ed831c7db397253d8b842e6fb69076898c5c4f
This commit is contained in:
Hugo Arès
2016-11-25 15:18:44 -05:00
6 changed files with 25 additions and 0 deletions

View File

@@ -21,6 +21,7 @@ import java.io.InputStream;
public abstract class BaseDataSourceType implements DataSourceType { public abstract class BaseDataSourceType implements DataSourceType {
private static final String DEFAULT_VALIDATION_QUERY = "select 1";
private final String driver; private final String driver;
protected BaseDataSourceType(String driver) { protected BaseDataSourceType(String driver) {
@@ -37,6 +38,11 @@ public abstract class BaseDataSourceType implements DataSourceType {
return true; return true;
} }
@Override
public String getValidationQuery() {
return DEFAULT_VALIDATION_QUERY;
}
@Override @Override
public ScriptRunner getIndexScript() throws IOException { public ScriptRunner getIndexScript() throws IOException {
return getScriptRunner("index_generic.sql"); return getScriptRunner("index_generic.sql");

View File

@@ -43,4 +43,9 @@ public class DB2 extends BaseDataSourceType {
b.append(dbc.required("database")); b.append(dbc.required("database"));
return b.toString(); return b.toString();
} }
@Override
public String getValidationQuery() {
return "SELECT 1 FROM SYSIBM.SYSDUMMY1";
}
} }

View File

@@ -137,6 +137,8 @@ public class DataSourceProvider implements Provider<DataSource>,
ds.setMaxWait(ConfigUtil.getTimeUnit(cfg, "database", null, ds.setMaxWait(ConfigUtil.getTimeUnit(cfg, "database", null,
"poolmaxwait", MILLISECONDS.convert(30, SECONDS), MILLISECONDS)); "poolmaxwait", MILLISECONDS.convert(30, SECONDS), MILLISECONDS));
ds.setInitialSize(ds.getMinIdle()); ds.setInitialSize(ds.getMinIdle());
ds.setValidationQuery(dst.getValidationQuery());
ds.setValidationQueryTimeout(5);
exportPoolMetrics(ds); exportPoolMetrics(ds);
return intercept(interceptor, ds); return intercept(interceptor, ds);

View File

@@ -24,6 +24,8 @@ public interface DataSourceType {
String getUrl(); String getUrl();
String getValidationQuery();
boolean usePool(); boolean usePool();
/** /**

View File

@@ -41,4 +41,9 @@ class Derby extends BaseDataSourceType {
} }
return "jdbc:derby:" + site.resolve(database).toString() + ";create=true"; return "jdbc:derby:" + site.resolve(database).toString() + ";create=true";
} }
@Override
public String getValidationQuery() {
return "values 1";
}
} }

View File

@@ -43,4 +43,9 @@ public class Oracle extends BaseDataSourceType {
b.append(dbc.required("instance")); b.append(dbc.required("instance"));
return b.toString(); return b.toString();
} }
@Override
public String getValidationQuery() {
return "select 1 from dual";
}
} }