Skip to content

Commit 9f9ba27

Browse files
committed
Prevent deadlock in create issue (go-gitea#17970)
Backport go-gitea#17970 When we have a transaction - queries to tables already queried must be queried within that transaction. repo.IsTimeTrackerEnabled() called repo.GetUnit() meaning that issue.loadAttributes causes a deadlock. Signed-off-by: Andrew Thornton <[email protected]>
1 parent 9879e23 commit 9f9ba27

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

models/repo_issue.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,18 @@ func (repo *Repository) CanEnableTimetracker() bool {
2121

2222
// IsTimetrackerEnabled returns whether or not the timetracker is enabled. It returns the default value from config if an error occurs.
2323
func (repo *Repository) IsTimetrackerEnabled() bool {
24+
return repo.isTimetrackerEnabled(x)
25+
}
26+
27+
// IsTimetrackerEnabled returns whether or not the timetracker is enabled. It returns the default value from config if an error occurs.
28+
func (repo *Repository) isTimetrackerEnabled(e Engine) bool {
2429
if !setting.Service.EnableTimetracking {
2530
return false
2631
}
2732

2833
var u *RepoUnit
2934
var err error
30-
if u, err = repo.GetUnit(UnitTypeIssues); err != nil {
35+
if u, err = repo.getUnit(e, UnitTypeIssues); err != nil {
3136
return setting.Service.DefaultEnableTimetracking
3237
}
3338
return u.IssuesConfig().EnableTimetracker

0 commit comments

Comments
 (0)