|
@@ -29,6 +29,7 @@ import java.util.ArrayList;
|
|
|
import java.util.Calendar;
|
|
|
import java.util.List;
|
|
|
import java.util.TimeZone;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.apache.hadoop.conf.Configuration;
|
|
@@ -224,17 +225,35 @@ public class SQLFederationStateStore implements FederationStateStore {
|
|
|
@VisibleForTesting
|
|
|
private Connection conn = null;
|
|
|
private int maxAppsInStateStore;
|
|
|
+ private int minimumIdle;
|
|
|
+ private String dataSourcePoolName;
|
|
|
+ private long maxLifeTime;
|
|
|
+ private long idleTimeout;
|
|
|
+ private long connectionTimeout;
|
|
|
|
|
|
protected static final Version CURRENT_VERSION_INFO = Version.newInstance(1, 1);
|
|
|
|
|
|
@Override
|
|
|
public void init(Configuration conf) throws YarnException {
|
|
|
- driverClass =
|
|
|
- conf.get(YarnConfiguration.FEDERATION_STATESTORE_SQL_JDBC_CLASS,
|
|
|
- YarnConfiguration.DEFAULT_FEDERATION_STATESTORE_SQL_JDBC_CLASS);
|
|
|
- maximumPoolSize =
|
|
|
- conf.getInt(YarnConfiguration.FEDERATION_STATESTORE_SQL_MAXCONNECTIONS,
|
|
|
- YarnConfiguration.DEFAULT_FEDERATION_STATESTORE_SQL_MAXCONNECTIONS);
|
|
|
+ // Database connection configuration
|
|
|
+ driverClass = conf.get(YarnConfiguration.FEDERATION_STATESTORE_SQL_JDBC_CLASS,
|
|
|
+ YarnConfiguration.DEFAULT_FEDERATION_STATESTORE_SQL_JDBC_CLASS);
|
|
|
+ maximumPoolSize = conf.getInt(YarnConfiguration.FEDERATION_STATESTORE_SQL_MAXCONNECTIONS,
|
|
|
+ YarnConfiguration.DEFAULT_FEDERATION_STATESTORE_SQL_MAXCONNECTIONS);
|
|
|
+ minimumIdle = conf.getInt(YarnConfiguration.FEDERATION_STATESTORE_SQL_MINIMUMIDLE,
|
|
|
+ YarnConfiguration.DEFAULT_FEDERATION_STATESTORE_SQL_MINIMUMIDLE);
|
|
|
+ dataSourcePoolName = conf.get(YarnConfiguration.FEDERATION_STATESTORE_POOL_NAME,
|
|
|
+ YarnConfiguration.DEFAULT_FEDERATION_STATESTORE_POOL_NAME);
|
|
|
+ maxLifeTime = conf.getTimeDuration(YarnConfiguration.FEDERATION_STATESTORE_CONN_MAX_LIFE_TIME,
|
|
|
+ YarnConfiguration.DEFAULT_FEDERATION_STATESTORE_CONN_MAX_LIFE_TIME, TimeUnit.MILLISECONDS);
|
|
|
+ idleTimeout = conf.getTimeDuration(
|
|
|
+ YarnConfiguration.FEDERATION_STATESTORE_CONN_IDLE_TIMEOUT_TIME,
|
|
|
+ YarnConfiguration.DEFAULT_FEDERATION_STATESTORE_CONN_IDLE_TIMEOUT_TIME,
|
|
|
+ TimeUnit.MILLISECONDS);
|
|
|
+ connectionTimeout = conf.getTimeDuration(
|
|
|
+ YarnConfiguration.FEDERATION_STATESTORE_CONNECTION_TIMEOUT,
|
|
|
+ YarnConfiguration.DEFAULT_FEDERATION_STATESTORE_CONNECTION_TIMEOUT_TIME,
|
|
|
+ TimeUnit.MILLISECONDS);
|
|
|
|
|
|
// An helper method avoids to assign a null value to these property
|
|
|
userName = conf.get(YarnConfiguration.FEDERATION_STATESTORE_SQL_USERNAME);
|
|
@@ -254,7 +273,14 @@ public class SQLFederationStateStore implements FederationStateStore {
|
|
|
FederationStateStoreUtils.setPassword(dataSource, password);
|
|
|
FederationStateStoreUtils.setProperty(dataSource,
|
|
|
FederationStateStoreUtils.FEDERATION_STORE_URL, url);
|
|
|
+
|
|
|
dataSource.setMaximumPoolSize(maximumPoolSize);
|
|
|
+ dataSource.setPoolName(dataSourcePoolName);
|
|
|
+ dataSource.setMinimumIdle(minimumIdle);
|
|
|
+ dataSource.setMaxLifetime(maxLifeTime);
|
|
|
+ dataSource.setIdleTimeout(idleTimeout);
|
|
|
+ dataSource.setConnectionTimeout(connectionTimeout);
|
|
|
+
|
|
|
LOG.info("Initialized connection pool to the Federation StateStore database at address: {}.",
|
|
|
url);
|
|
|
|
|
@@ -2010,4 +2036,9 @@ public class SQLFederationStateStore implements FederationStateStore {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @VisibleForTesting
|
|
|
+ public HikariDataSource getDataSource() {
|
|
|
+ return dataSource;
|
|
|
+ }
|
|
|
}
|