Add missing transaction rollbacks for SQL store (#9964)

* Add missing transaction rollbacks for SQL store

* Add `defer transaction.Rollback()` in SQL stores.

* abstract finalizeTransaction
Этот коммит содержится в:
κουκουλοφόρος
2019-02-23 19:44:52 +00:00
коммит произвёл Lev
родитель b4d645f121
Коммит 5b24c44e19
11 изменённых файлов: 49 добавлений и 108 удалений

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

@@ -5,8 +5,12 @@ package sqlstore
import (
"bytes"
"database/sql"
"fmt"
"strconv"
"github.com/mattermost/gorp"
"github.com/mattermost/mattermost-server/mlog"
)
// Converts a list of strings into a list of query parameters and a named parameter map that can
@@ -26,3 +30,11 @@ func MapStringsToQueryParams(list []string, paramPrefix string) (string, map[str
return fmt.Sprintf("(%v)", keys.String()), params
}
// finalizeTransaction ensures a transaction is closed after use, rolling back if not already committed.
func finalizeTransaction(transaction *gorp.Transaction) {
// Rollback returns sql.ErrTxDone if the transaction was already closed.
if err := transaction.Rollback(); err != nil && err != sql.ErrTxDone {
mlog.Error("Failed to rollback transaction", mlog.Err(err))
}
}