summaryrefslogtreecommitdiffstats
path: root/models/issue_comment.go
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2016-12-22 17:00:39 +0800
committerGitHub <noreply@github.com>2016-12-22 17:00:39 +0800
commit0c5c34d7ddaf31a6d8123dac36b221de61f5ff96 (patch)
tree0bfbab9ff4ad4717eab1b8ae60cad4401c421658 /models/issue_comment.go
parent4c89a9c33c4c097836f5bfa79cc7e5adc142a2f0 (diff)
downloadgitea-0c5c34d7ddaf31a6d8123dac36b221de61f5ff96.tar.gz
gitea-0c5c34d7ddaf31a6d8123dac36b221de61f5ff96.zip
UpdateIssueUsersByMentions was calling database write operations while (#443)
a transaction session was in progress. MailParticipants was failing silently because of the SQLITE_LOCKED error. Make sure failures in MailParticipants enter the log, and pass on the transaction context. issue: let caller pass in database context, and use it issue_comment: obtain database context to pass to UpdateIssueMentions issue_comment: log any error from call to MailParticipants issue_mail: pass on database context to UpdateIssueMentions
Diffstat (limited to 'models/issue_comment.go')
-rw-r--r--models/issue_comment.go8
1 files changed, 5 insertions, 3 deletions
diff --git a/models/issue_comment.go b/models/issue_comment.go
index fc615d5346..22c1e8cf91 100644
--- a/models/issue_comment.go
+++ b/models/issue_comment.go
@@ -187,9 +187,9 @@ func (c *Comment) EventTag() string {
// MailParticipants sends new comment emails to repository watchers
// and mentioned people.
-func (c *Comment) MailParticipants(opType ActionType, issue *Issue) (err error) {
+func (c *Comment) MailParticipants(e Engine, opType ActionType, issue *Issue) (err error) {
mentions := markdown.FindAllMentions(c.Content)
- if err = UpdateIssueMentions(c.IssueID, mentions); err != nil {
+ if err = UpdateIssueMentions(e, c.IssueID, mentions); err != nil {
return fmt.Errorf("UpdateIssueMentions [%d]: %v", c.IssueID, err)
}
@@ -303,7 +303,9 @@ func createComment(e *xorm.Session, opts *CreateCommentOptions) (_ *Comment, err
if err = notifyWatchers(e, act); err != nil {
log.Error(4, "notifyWatchers: %v", err)
}
- comment.MailParticipants(act.OpType, opts.Issue)
+ if err = comment.MailParticipants(e, act.OpType, opts.Issue); err != nil {
+ log.Error(4, "MailParticipants: %v", err)
+ }
}
return comment, nil