Skip to content

Commit

Permalink
Reliably detect evicted pods for failing BuildRuns
Browse files Browse the repository at this point in the history
When a BuildRun pod is failing it is not necessary to check for failedContainer first.
We can directly check if the pod is evicted and reflect that in the BuildRun condition
Depending on how the system is evicting the pod, `extractFailedPodAndContainer` might return a non-nil value for `failedContainer`.
In such scenarios we were not detecting if the pod was evicted.
This is now fixed as we first check the Reason
  • Loading branch information
isibeni committed Oct 5, 2023
1 parent 777951d commit 3217795
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions pkg/reconciler/buildrun/resources/conditions.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,14 @@ func UpdateBuildRunUsingTaskRunCondition(ctx context.Context, client client.Clie
//nolint:staticcheck // SA1019 we want to give users some time to adopt to failureDetails
buildRun.Status.FailedAt = &buildv1alpha1.FailedAt{Pod: pod.Name}

if failedContainer != nil {
if pod.Status.Reason == "Evicted" {
message = pod.Status.Message
reason = buildv1alpha1.BuildRunStatePodEvicted
if failedContainer != nil {
//nolint:staticcheck // SA1019 we want to give users some time to adopt to failureDetails
buildRun.Status.FailedAt.Container = failedContainer.Name
}
} else if failedContainer != nil {
//nolint:staticcheck // SA1019 we want to give users some time to adopt to failureDetails
buildRun.Status.FailedAt.Container = failedContainer.Name
message = fmt.Sprintf("buildrun step %s failed in pod %s, for detailed information: kubectl --namespace %s logs %s --container=%s",
Expand All @@ -107,9 +114,6 @@ func UpdateBuildRunUsingTaskRunCondition(ctx context.Context, client client.Clie
pod.Name,
failedContainer.Name,
)
} else if pod.Status.Reason == "Evicted" {
message = pod.Status.Message
reason = buildv1alpha1.BuildRunStatePodEvicted
} else {
message = fmt.Sprintf("buildrun failed due to an unexpected error in pod %s: for detailed information: kubectl --namespace %s logs %s --all-containers",
pod.Name,
Expand Down

0 comments on commit 3217795

Please sign in to comment.