From 0c5c34d7ddaf31a6d8123dac36b221de61f5ff96 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 22 Dec 2016 17:00:39 +0800 Subject: 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 --- models/issue_comment.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'models/issue_comment.go') 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 -- cgit v1.2.3