diff --git a/components/admin_console/admin_settings.jsx b/components/admin_console/admin_settings.jsx
index 2f888a4e8b6f..0ef48b81545c 100644
--- a/components/admin_console/admin_settings.jsx
+++ b/components/admin_console/admin_settings.jsx
@@ -127,6 +127,19 @@ export default class AdminSettings extends React.Component {
return n;
};
+ parseIntNonNegative = (str, defaultValue) => {
+ const n = parseInt(str, 10);
+
+ if (isNaN(n) || n < 0) {
+ if (defaultValue) {
+ return defaultValue;
+ }
+ return 0;
+ }
+
+ return n;
+ };
+
parseIntNonZero = (str, defaultValue) => {
const n = parseInt(str, 10);
diff --git a/components/admin_console/database_settings.jsx b/components/admin_console/database_settings.jsx
index 62716a23e911..f4fedb466bd1 100644
--- a/components/admin_console/database_settings.jsx
+++ b/components/admin_console/database_settings.jsx
@@ -25,12 +25,13 @@ export default class DatabaseSettings extends AdminSettings {
getConfigFromState(config) {
// driverName and dataSource are read-only from the UI
-
+
config.SqlSettings.MaxIdleConns = this.parseIntNonZero(this.state.maxIdleConns);
config.SqlSettings.MaxOpenConns = this.parseIntNonZero(this.state.maxOpenConns);
config.SqlSettings.AtRestEncryptKey = this.state.atRestEncryptKey;
config.SqlSettings.Trace = this.state.trace;
config.SqlSettings.QueryTimeout = this.parseIntNonZero(this.state.queryTimeout);
+ config.SqlSettings.ConnMaxLifetimeMilliseconds = this.parseIntNonNegative(this.state.connMaxLifetimeMilliseconds);
return config;
}
@@ -44,6 +45,7 @@ export default class DatabaseSettings extends AdminSettings {
atRestEncryptKey: config.SqlSettings.AtRestEncryptKey,
trace: config.SqlSettings.Trace,
queryTimeout: config.SqlSettings.QueryTimeout,
+ connMaxLifetimeMilliseconds: config.SqlSettings.ConnMaxLifetimeMilliseconds,
};
}
@@ -199,6 +201,25 @@ export default class DatabaseSettings extends AdminSettings {
onChange={this.handleChange}
setByEnv={this.isSetByEnv('SqlSettings.QueryTimeout')}
/>
+
+ }
+ placeholder={Utils.localizeMessage('admin.sql.connMaxLifetimeExample', 'E.g.: "3600000"')}
+ helpText={
+
+ }
+ value={this.state.connMaxLifetimeMilliseconds}
+ onChange={this.handleChange}
+ setByEnv={this.isSetByEnv('SqlSettings.ConnMaxLifetimeMilliseconds')}
+ />