summaryrefslogtreecommitdiffstats
path: root/models/issue.go
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2019-01-14 02:29:58 +0000
committertechknowlogick <hello@techknowlogick.com>2019-01-13 21:29:58 -0500
commit6868378673f5bb21eac54719d719557b32448db6 (patch)
tree561ad952fa24332823d1288b1ff364206f1e4caf /models/issue.go
parent656456441ca09de27ffb44d7a8042db811ff989e (diff)
downloadgitea-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.go10
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
}