fix(controller): detect existing job with AlreadyExists

The job creation check matched the substring 'exists' in the error text.
It now uses apierrors.IsAlreadyExists, so unrelated errors no longer match.
This commit is contained in:
2026-10-02 04:01:01 +01:00
parent bdfc781044
commit 1b2c2b1a3d
+2 -3
View File
@@ -1,11 +1,10 @@
package controllers package controllers
import ( import (
"strings"
"github.com/lukaszraczylo/pandati" "github.com/lukaszraczylo/pandati"
kbatch "k8s.io/api/batch/v1" kbatch "k8s.io/api/batch/v1"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/labels"
jobsmanagerv1beta1 "raczylo.com/jobs-manager-operator/api/v1beta1" jobsmanagerv1beta1 "raczylo.com/jobs-manager-operator/api/v1beta1"
@@ -203,7 +202,7 @@ func (cp *connPackage) runPendingJobs() {
err := cp.executeJob(job, group) err := cp.executeJob(job, group)
if err != nil { if err != nil {
cp.logger.Error(err, "Unable to execute job", "job", job.Name, "group", group.Name) cp.logger.Error(err, "Unable to execute job", "job", job.Name, "group", group.Name)
if !strings.Contains(err.Error(), "exists") { if !apierrors.IsAlreadyExists(err) {
job.Status = ExecutionStatusFailed job.Status = ExecutionStatusFailed
group.Status = ExecutionStatusFailed group.Status = ExecutionStatusFailed
cp.updateDependentJobs(job.Name, ExecutionStatusFailed) cp.updateDependentJobs(job.Name, ExecutionStatusFailed)