Skip to content

Commit 11e3166

Browse files
authored
Fix deadlock in webhook PullRequest (#6102)
Signed-off-by: Andrew Thornton <[email protected]>
1 parent 8d3bb86 commit 11e3166

File tree

3 files changed

+15
-13
lines changed

3 files changed

+15
-13
lines changed

models/webhook_dingtalk.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,12 +230,13 @@ func getDingtalkPullRequestPayload(p *api.PullRequestPayload) (*DingtalkPayload,
230230
title = fmt.Sprintf("[%s] Pull request edited: #%d %s", p.Repository.FullName, p.Index, p.PullRequest.Title)
231231
text = p.PullRequest.Body
232232
case api.HookIssueAssigned:
233-
list, err := MakeAssigneeList(&Issue{ID: p.PullRequest.ID})
234-
if err != nil {
235-
return &DingtalkPayload{}, err
233+
list := make([]string, len(p.PullRequest.Assignees))
234+
for i, user := range p.PullRequest.Assignees {
235+
list[i] = user.UserName
236236
}
237237
title = fmt.Sprintf("[%s] Pull request assigned to %s: #%d %s", p.Repository.FullName,
238-
list, p.Index, p.PullRequest.Title)
238+
strings.Join(list, ", "),
239+
p.Index, p.PullRequest.Title)
239240
text = p.PullRequest.Body
240241
case api.HookIssueUnassigned:
241242
title = fmt.Sprintf("[%s] Pull request unassigned: #%d %s", p.Repository.FullName, p.Index, p.PullRequest.Title)

models/webhook_discord.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -347,12 +347,13 @@ func getDiscordPullRequestPayload(p *api.PullRequestPayload, meta *DiscordMeta)
347347
text = p.PullRequest.Body
348348
color = warnColor
349349
case api.HookIssueAssigned:
350-
list, err := MakeAssigneeList(&Issue{ID: p.PullRequest.ID})
351-
if err != nil {
352-
return &DiscordPayload{}, err
350+
list := make([]string, len(p.PullRequest.Assignees))
351+
for i, user := range p.PullRequest.Assignees {
352+
list[i] = user.UserName
353353
}
354-
title = fmt.Sprintf("[%s] Pull request assigned to %s: #%d %s", p.Repository.FullName,
355-
list, p.Index, p.PullRequest.Title)
354+
title = fmt.Sprintf("[%s] Pull request assigned to %s: #%d by %s", p.Repository.FullName,
355+
strings.Join(list, ", "),
356+
p.Index, p.PullRequest.Title)
356357
text = p.PullRequest.Body
357358
color = successColor
358359
case api.HookIssueUnassigned:

models/webhook_slack.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -301,12 +301,12 @@ func getSlackPullRequestPayload(p *api.PullRequestPayload, slack *SlackMeta) (*S
301301
text = fmt.Sprintf("[%s] Pull request edited: %s by %s", p.Repository.FullName, titleLink, senderLink)
302302
attachmentText = SlackTextFormatter(p.PullRequest.Body)
303303
case api.HookIssueAssigned:
304-
list, err := MakeAssigneeList(&Issue{ID: p.PullRequest.ID})
305-
if err != nil {
306-
return &SlackPayload{}, err
304+
list := make([]string, len(p.PullRequest.Assignees))
305+
for i, user := range p.PullRequest.Assignees {
306+
list[i] = SlackLinkFormatter(setting.AppURL+user.UserName, user.UserName)
307307
}
308308
text = fmt.Sprintf("[%s] Pull request assigned to %s: %s by %s", p.Repository.FullName,
309-
SlackLinkFormatter(setting.AppURL+list, list),
309+
strings.Join(list, ", "),
310310
titleLink, senderLink)
311311
case api.HookIssueUnassigned:
312312
text = fmt.Sprintf("[%s] Pull request unassigned: %s by %s", p.Repository.FullName, titleLink, senderLink)

0 commit comments

Comments
 (0)