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>
Этот коммит содержится в:
Agniva De Sarker
2022-12-12 14:59:47 +05:30
коммит произвёл GitHub
родитель 3b043c1f12
Коммит 9ab1d8f805
2 изменённых файлов: 26 добавлений и 1 удалений

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

@@ -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
}