add MaxLifetimeconns to server (#9004)

Update e.json string names and remove console log

reorder variables

update db.setConnMaxLifetime to take in *settings.MaxLifetimeConns

Add MaxLifetimeConns to test

Update variable names like MaxLifetimeConns to ConnMaxLifetimeMilliseconds

Update time passed to SetConnMaxLifetime

Revert "Update time passed to SetConnMaxLifetime"

This reverts commit dc1c1b6d5a6404d4ee11c65d4756c19f9316794f.

update en.json

Update supplier_test.go and docker.go ConnMaxLifetimeMilliseconds to 3600000
Этот коммит содержится в:
Jerry Kurian
2018-06-28 09:45:20 -04:00
коммит произвёл Jesse Hallam
родитель 66dc9a5206
Коммит 4b2a626354
7 изменённых файлов: 88 добавлений и 68 удалений

Просмотреть файл

@@ -300,6 +300,7 @@ func (a *App) trackConfig() {
"driver_name": *cfg.SqlSettings.DriverName, "driver_name": *cfg.SqlSettings.DriverName,
"trace": cfg.SqlSettings.Trace, "trace": cfg.SqlSettings.Trace,
"max_idle_conns": *cfg.SqlSettings.MaxIdleConns, "max_idle_conns": *cfg.SqlSettings.MaxIdleConns,
"conn_max_lifetime_milliseconds": *cfg.SqlSettings.ConnMaxLifetimeMilliseconds,
"max_open_conns": *cfg.SqlSettings.MaxOpenConns, "max_open_conns": *cfg.SqlSettings.MaxOpenConns,
"data_source_replicas": len(cfg.SqlSettings.DataSourceReplicas), "data_source_replicas": len(cfg.SqlSettings.DataSourceReplicas),
"data_source_search_replicas": len(cfg.SqlSettings.DataSourceSearchReplicas), "data_source_search_replicas": len(cfg.SqlSettings.DataSourceSearchReplicas),

Просмотреть файл

@@ -119,6 +119,7 @@
"DataSourceReplicas": [], "DataSourceReplicas": [],
"DataSourceSearchReplicas": [], "DataSourceSearchReplicas": [],
"MaxIdleConns": 20, "MaxIdleConns": 20,
"ConnMaxLifetimeMilliseconds": 3600000,
"MaxOpenConns": 300, "MaxOpenConns": 300,
"Trace": false, "Trace": false,
"AtRestEncryptKey": "", "AtRestEncryptKey": "",

Просмотреть файл

@@ -4038,6 +4038,10 @@
"id": "model.config.is_valid.sql_max_conn.app_error", "id": "model.config.is_valid.sql_max_conn.app_error",
"translation": "Invalid maximum open connection for SQL settings. Must be a positive number." "translation": "Invalid maximum open connection for SQL settings. Must be a positive number."
}, },
{
"id": "model.config.is_valid.sql_conn_max_lifetime_milliseconds.app_error",
"translation": "Invalid connection maximum lifetime for SQL settings. Must be a non-negative number."
},
{ {
"id": "model.config.is_valid.sql_query_timeout.app_error", "id": "model.config.is_valid.sql_query_timeout.app_error",
"translation": "Invalid query timeout for SQL settings. Must be a positive number." "translation": "Invalid query timeout for SQL settings. Must be a positive number."

Просмотреть файл

@@ -610,6 +610,7 @@ type SqlSettings struct {
DataSourceReplicas []string DataSourceReplicas []string
DataSourceSearchReplicas []string DataSourceSearchReplicas []string
MaxIdleConns *int MaxIdleConns *int
ConnMaxLifetimeMilliseconds *int
MaxOpenConns *int MaxOpenConns *int
Trace bool Trace bool
AtRestEncryptKey string AtRestEncryptKey string
@@ -637,6 +638,10 @@ func (s *SqlSettings) SetDefaults() {
s.MaxOpenConns = NewInt(300) s.MaxOpenConns = NewInt(300)
} }
if s.ConnMaxLifetimeMilliseconds == nil {
s.ConnMaxLifetimeMilliseconds = NewInt(3600000)
}
if s.QueryTimeout == nil { if s.QueryTimeout == nil {
s.QueryTimeout = NewInt(30) s.QueryTimeout = NewInt(30)
} }
@@ -2069,6 +2074,10 @@ func (ss *SqlSettings) isValid() *AppError {
return NewAppError("Config.IsValid", "model.config.is_valid.sql_idle.app_error", nil, "", http.StatusBadRequest) return NewAppError("Config.IsValid", "model.config.is_valid.sql_idle.app_error", nil, "", http.StatusBadRequest)
} }
if *ss.ConnMaxLifetimeMilliseconds < 0 {
return NewAppError("Config.IsValid", "model.config.is_valid.sql_conn_max_lifetime_milliseconds.app_error", nil, "", http.StatusBadRequest)
}
if *ss.QueryTimeout <= 0 { if *ss.QueryTimeout <= 0 {
return NewAppError("Config.IsValid", "model.config.is_valid.sql_query_timeout.app_error", nil, "", http.StatusBadRequest) return NewAppError("Config.IsValid", "model.config.is_valid.sql_query_timeout.app_error", nil, "", http.StatusBadRequest)
} }

Просмотреть файл

@@ -28,7 +28,6 @@ import (
const ( const (
INDEX_TYPE_FULL_TEXT = "full_text" INDEX_TYPE_FULL_TEXT = "full_text"
INDEX_TYPE_DEFAULT = "default" INDEX_TYPE_DEFAULT = "default"
MAX_DB_CONN_LIFETIME = 60
DB_PING_ATTEMPTS = 18 DB_PING_ATTEMPTS = 18
DB_PING_TIMEOUT_SECS = 10 DB_PING_TIMEOUT_SECS = 10
) )
@@ -218,7 +217,7 @@ func setupConnection(con_type string, dataSource string, settings *model.SqlSett
db.SetMaxIdleConns(*settings.MaxIdleConns) db.SetMaxIdleConns(*settings.MaxIdleConns)
db.SetMaxOpenConns(*settings.MaxOpenConns) db.SetMaxOpenConns(*settings.MaxOpenConns)
db.SetConnMaxLifetime(time.Duration(MAX_DB_CONN_LIFETIME) * time.Minute) db.SetConnMaxLifetime(time.Duration(*settings.ConnMaxLifetimeMilliseconds) * time.Millisecond)
var dbmap *gorp.DbMap var dbmap *gorp.DbMap

Просмотреть файл

@@ -73,6 +73,7 @@ func TestGetReplica(t *testing.T) {
driverName := model.DATABASE_DRIVER_SQLITE driverName := model.DATABASE_DRIVER_SQLITE
dataSource := ":memory:" dataSource := ":memory:"
maxIdleConns := 1 maxIdleConns := 1
connMaxLifetimeMilliseconds := 3600000
maxOpenConns := 1 maxOpenConns := 1
queryTimeout := 5 queryTimeout := 5
@@ -80,6 +81,7 @@ func TestGetReplica(t *testing.T) {
DriverName: &driverName, DriverName: &driverName,
DataSource: &dataSource, DataSource: &dataSource,
MaxIdleConns: &maxIdleConns, MaxIdleConns: &maxIdleConns,
ConnMaxLifetimeMilliseconds: &connMaxLifetimeMilliseconds,
MaxOpenConns: &maxOpenConns, MaxOpenConns: &maxOpenConns,
QueryTimeout: &queryTimeout, QueryTimeout: &queryTimeout,
DataSourceReplicas: testCase.DataSourceReplicas, DataSourceReplicas: testCase.DataSourceReplicas,
@@ -209,6 +211,7 @@ func TestGetAllConns(t *testing.T) {
driverName := model.DATABASE_DRIVER_SQLITE driverName := model.DATABASE_DRIVER_SQLITE
dataSource := ":memory:" dataSource := ":memory:"
maxIdleConns := 1 maxIdleConns := 1
connMaxLifetimeMilliseconds := 3600000
maxOpenConns := 1 maxOpenConns := 1
queryTimeout := 5 queryTimeout := 5
@@ -216,6 +219,7 @@ func TestGetAllConns(t *testing.T) {
DriverName: &driverName, DriverName: &driverName,
DataSource: &dataSource, DataSource: &dataSource,
MaxIdleConns: &maxIdleConns, MaxIdleConns: &maxIdleConns,
ConnMaxLifetimeMilliseconds: &connMaxLifetimeMilliseconds,
MaxOpenConns: &maxOpenConns, MaxOpenConns: &maxOpenConns,
QueryTimeout: &queryTimeout, QueryTimeout: &queryTimeout,
DataSourceReplicas: testCase.DataSourceReplicas, DataSourceReplicas: testCase.DataSourceReplicas,

Просмотреть файл

@@ -81,12 +81,14 @@ func databaseSettings(driver, dataSource string) *model.SqlSettings {
DataSourceReplicas: []string{}, DataSourceReplicas: []string{},
DataSourceSearchReplicas: []string{}, DataSourceSearchReplicas: []string{},
MaxIdleConns: new(int), MaxIdleConns: new(int),
ConnMaxLifetimeMilliseconds: new(int),
MaxOpenConns: new(int), MaxOpenConns: new(int),
Trace: false, Trace: false,
AtRestEncryptKey: model.NewRandomString(32), AtRestEncryptKey: model.NewRandomString(32),
QueryTimeout: new(int), QueryTimeout: new(int),
} }
*settings.MaxIdleConns = 10 *settings.MaxIdleConns = 10
*settings.ConnMaxLifetimeMilliseconds = 3600000
*settings.MaxOpenConns = 100 *settings.MaxOpenConns = 100
*settings.QueryTimeout = 10 *settings.QueryTimeout = 10
return settings return settings