diff options
author | zeripath <art27@cantab.net> | 2019-01-14 02:29:58 +0000 |
---|---|---|
committer | techknowlogick <hello@techknowlogick.com> | 2019-01-13 21:29:58 -0500 |
commit | 6868378673f5bb21eac54719d719557b32448db6 (patch) | |
tree | 561ad952fa24332823d1288b1ff364206f1e4caf /models/issue.go | |
parent | 656456441ca09de27ffb44d7a8042db811ff989e (diff) | |
download | gitea-6868378673f5bb21eac54719d719557b32448db6.tar.gz gitea-6868378673f5bb21eac54719d719557b32448db6.zip |
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.
Diffstat (limited to 'models/issue.go')
-rw-r--r-- | models/issue.go | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/models/issue.go b/models/issue.go index f81281b0e1..4f03ed926e 100644 --- a/models/issue.go +++ b/models/issue.go @@ -103,7 +103,11 @@ func (issue *Issue) loadRepo(e Engine) (err error) { // IsTimetrackerEnabled returns true if the repo enables timetracking func (issue *Issue) IsTimetrackerEnabled() bool { - if err := issue.loadRepo(x); err != nil { + return issue.isTimetrackerEnabled(x) +} + +func (issue *Issue) isTimetrackerEnabled(e Engine) bool { + if err := issue.loadRepo(e); err != nil { log.Error(4, fmt.Sprintf("loadRepo: %v", err)) return false } @@ -196,7 +200,7 @@ func (issue *Issue) loadReactions(e Engine) (err error) { return err } // Load reaction user data - if _, err := ReactionList(reactions).LoadUsers(); err != nil { + if _, err := ReactionList(reactions).loadUsers(e); err != nil { return err } @@ -255,7 +259,7 @@ func (issue *Issue) loadAttributes(e Engine) (err error) { if err = issue.loadComments(e); err != nil { return err } - if issue.IsTimetrackerEnabled() { + if issue.isTimetrackerEnabled(e) { if err = issue.loadTotalTimes(e); err != nil { return err } |