Skip to content

Commit d0b1c0b

Browse files
authored
Fix nil pointer panic in comment updater when backend API returns nil (#2190)
Signed-off-by: Lorenzo Buitizon <[email protected]>
1 parent b153923 commit d0b1c0b

File tree

3 files changed

+20
-5
lines changed

3 files changed

+20
-5
lines changed

cli/pkg/digger/digger.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,15 @@ func RunJobs(jobs []orchestrator.Job, prService ci.PullRequestService, orgServic
148148
return false, false, fmt.Errorf("error while running command: %v", err)
149149
}
150150

151-
err = commentUpdater.UpdateComment(batchResult.Jobs, prNumber, prService, prCommentId)
152-
if err != nil {
153-
slog.Error("error Updating status comment", "error", err)
154-
return false, false, err
151+
// Check if batchResult is nil (can happen with mock backend or when backend is not configured)
152+
if batchResult == nil {
153+
slog.Warn("batchResult is nil, skipping comment update", "jobId", jobId, "prNumber", prNumber)
154+
} else {
155+
err = commentUpdater.UpdateComment(batchResult.Jobs, prNumber, prService, prCommentId)
156+
if err != nil {
157+
slog.Error("error Updating status comment", "error", err, "prNumber", prNumber, "jobId", jobId)
158+
return false, false, err
159+
}
155160
}
156161

157162
}

cli/pkg/spec/spec.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,12 @@ func RunSpec(
163163
message := fmt.Sprintf("Failed run commands. %v", err)
164164
reportError(spec, backendApi, message, err)
165165
}
166-
commentUpdater.UpdateComment(serializedBatch.Jobs, serializedBatch.PrNumber, prService, commentId)
166+
// Check if serializedBatch is nil (can happen with mock backend or when backend is not configured)
167+
if serializedBatch == nil {
168+
slog.Warn("serializedBatch is nil, skipping comment update", "jobId", spec.JobId)
169+
} else {
170+
commentUpdater.UpdateComment(serializedBatch.Jobs, serializedBatch.PrNumber, prService, commentId)
171+
}
167172
reportError(spec, backendApi, fmt.Sprintf("failed to run commands %v", err), err)
168173
}
169174
usage.ReportErrorAndExit(spec.VCS.RepoOwner, "Digger finished successfully", 0)

libs/comment_utils/summary/updater.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ func (b BasicCommentUpdater) UpdateComment(jobs []scheduler.SerializedJob, prNum
2424
return err
2525
}
2626

27+
if len(jobSpecs) == 0 {
28+
slog.Warn("no job specs found, cannot update comment", "jobCount", len(jobs))
29+
return nil
30+
}
31+
2732
firstJobSpec := jobSpecs[0]
2833
jobType := firstJobSpec.JobType
2934
jobTypeTitle := cases.Title(language.AmericanEnglish).String(string(jobType))

0 commit comments

Comments
 (0)