MM-48984: Add missing timeout while creating a connection (#21847)
If a timeout is missing, this goroutine waits indefinitely trying to get a connection. Leading to a goroutine accumulation in a scenario where the DB is somehow not release connections. https://mattermost.atlassian.net/browse/MM-48984 ```release-note NONE ``` Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
3b043c1f12
Коммит
9ab1d8f805
@@ -8,6 +8,7 @@ import (
|
||||
"database/sql"
|
||||
"database/sql/driver"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/model"
|
||||
"github.com/mattermost/mattermost-server/v6/plugin"
|
||||
@@ -44,7 +45,10 @@ func (d *DriverImpl) Conn(isMaster bool) (string, error) {
|
||||
if !isMaster {
|
||||
dbFunc = d.s.Platform().Store.GetInternalReplicaDB
|
||||
}
|
||||
conn, err := dbFunc().Conn(context.Background())
|
||||
timeout := time.Duration(*d.s.Config().SqlSettings.QueryTimeout) * time.Second
|
||||
ctx, cancel := context.WithTimeout(context.Background(), timeout)
|
||||
defer cancel()
|
||||
conn, err := dbFunc().Conn(ctx)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user