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
Этот коммит содержится в:
коммит произвёл
Jesse Hallam
родитель
66dc9a5206
Коммит
4b2a626354
@@ -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
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user