Skip to content

Commit 35d2fa7

Browse files
zeripathdelvhtechknowlogick
authored
Fix intermittent panic in notify issue change content (#23019)
Ensure that issue pullrequests are loaded before trying to set the self-reference. Signed-off-by: Andrew Thornton <[email protected]> Co-authored-by: delvh <[email protected]> Co-authored-by: techknowlogick <[email protected]>
1 parent 97aacc3 commit 35d2fa7

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

models/issues/issue.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -251,13 +251,15 @@ func (issue *Issue) LoadPoster(ctx context.Context) (err error) {
251251

252252
// LoadPullRequest loads pull request info
253253
func (issue *Issue) LoadPullRequest(ctx context.Context) (err error) {
254-
if issue.IsPull && issue.PullRequest == nil {
255-
issue.PullRequest, err = GetPullRequestByIssueID(ctx, issue.ID)
256-
if err != nil {
257-
if IsErrPullRequestNotExist(err) {
258-
return err
254+
if issue.IsPull {
255+
if issue.PullRequest == nil {
256+
issue.PullRequest, err = GetPullRequestByIssueID(ctx, issue.ID)
257+
if err != nil {
258+
if IsErrPullRequestNotExist(err) {
259+
return err
260+
}
261+
return fmt.Errorf("getPullRequestByIssueID [%d]: %w", issue.ID, err)
259262
}
260-
return fmt.Errorf("getPullRequestByIssueID [%d]: %w", issue.ID, err)
261263
}
262264
issue.PullRequest.Issue = issue
263265
}

services/webhook/notifier.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,6 @@ func (m *webhookNotifier) NotifyIssueChangeAssignee(ctx context.Context, doer *u
150150
log.Error("LoadPullRequest failed: %v", err)
151151
return
152152
}
153-
issue.PullRequest.Issue = issue
154153
apiPullRequest := &api.PullRequestPayload{
155154
Index: issue.Index,
156155
PullRequest: convert.ToAPIPullRequest(ctx, issue.PullRequest, nil),
@@ -196,7 +195,6 @@ func (m *webhookNotifier) NotifyIssueChangeTitle(ctx context.Context, doer *user
196195
log.Error("LoadPullRequest failed: %v", err)
197196
return
198197
}
199-
issue.PullRequest.Issue = issue
200198
err = PrepareWebhooks(ctx, EventSource{Repository: issue.Repo}, webhook_module.HookEventPullRequest, &api.PullRequestPayload{
201199
Action: api.HookIssueEdited,
202200
Index: issue.Index,
@@ -328,7 +326,10 @@ func (m *webhookNotifier) NotifyIssueChangeContent(ctx context.Context, doer *us
328326
mode, _ := access_model.AccessLevel(ctx, issue.Poster, issue.Repo)
329327
var err error
330328
if issue.IsPull {
331-
issue.PullRequest.Issue = issue
329+
if err := issue.LoadPullRequest(ctx); err != nil {
330+
log.Error("LoadPullRequest: %v", err)
331+
return
332+
}
332333
err = PrepareWebhooks(ctx, EventSource{Repository: issue.Repo}, webhook_module.HookEventPullRequest, &api.PullRequestPayload{
333334
Action: api.HookIssueEdited,
334335
Index: issue.Index,

0 commit comments

Comments
 (0)