Ensure that sessions are passed into queries that could use the database to prevent deadlocks (#5718)

* Fixed deadlock in CreateComment

* Fix possible deadlock in UpdateIssueDeadline from createDeadlineComment

* Ensure that calls to IsTimeTracker enabled are called within session

Signed-off-by: Andrew Thornton <art27@cantab.net>

* Ensure that calls to reactionList are also called within session

Signed-off-by: Andrew Thornton <art27@cantab.net>

* Ensure all calls in NewPullRequest with the session are called within the session

Signed-off-by: Andrew Thornton <art27@cantab.net>

* Deal with potential deadlocks in repo

Signed-off-by: Andrew Thornton <art27@cantab.net>

* Ensure that isStaring is checked within our transaction

Signed-off-by: Andrew Thornton <art27@cantab.net>

* Fix mistake in isOrganizationMember

Sorry.
This commit is contained in:
zeripath 2019-01-14 02:29:58 +00:00 committed by techknowlogick
parent 656456441c
commit 6868378673
6 changed files with 42 additions and 22 deletions

View file

@ -21,7 +21,7 @@ func StarRepo(userID, repoID int64, star bool) error {
}
if star {
if IsStaring(userID, repoID) {
if isStaring(sess, userID, repoID) {
return nil
}
@ -35,7 +35,7 @@ func StarRepo(userID, repoID int64, star bool) error {
return err
}
} else {
if !IsStaring(userID, repoID) {
if !isStaring(sess, userID, repoID) {
return nil
}
@ -55,7 +55,11 @@ func StarRepo(userID, repoID int64, star bool) error {
// IsStaring checks if user has starred given repository.
func IsStaring(userID, repoID int64) bool {
has, _ := x.Get(&Star{0, userID, repoID})
return isStaring(x, userID, repoID)
}
func isStaring(e Engine, userID, repoID int64) bool {
has, _ := e.Get(&Star{0, userID, repoID})
return has
}