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')} + />