From b2d2295d076455dd292f3629620c559e10b4a4be Mon Sep 17 00:00:00 2001 From: Mohammadreza Khani Date: Fri, 13 Dec 2024 02:50:43 +0330 Subject: [PATCH] feat: allow restore jobs that has not any taken save point --- internal/managed_job/cycle.go | 4 ++++ internal/managed_job/restore.go | 9 ++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/internal/managed_job/cycle.go b/internal/managed_job/cycle.go index fa7d1a7..d31409e 100644 --- a/internal/managed_job/cycle.go +++ b/internal/managed_job/cycle.go @@ -102,6 +102,10 @@ func (job *ManagedJob) Cycle() { job.restore() return } + if job.def.Status.JobStatus == v1alpha1.JobStatusFailed && job.def.Status.LastSavepointPath == nil { + job.restore() + return + } pkg.Logger.Warn("[managed-job] [cycle]", zap.String("unhanded job status", string(job.def.Status.JobStatus))) } diff --git a/internal/managed_job/restore.go b/internal/managed_job/restore.go index 98ca049..5983696 100644 --- a/internal/managed_job/restore.go +++ b/internal/managed_job/restore.go @@ -14,23 +14,26 @@ import ( // restore the job from savepoint and jarId in managedJob func (job *ManagedJob) restore() error { + var savepointPath string if job.def.Status.LastSavepointPath == nil { pkg.Logger.Error("[managed-job] [restore]", zap.Error(v1alpha1.ErrNoSavepointPath)) - return v1alpha1.ErrNoSavepointPath + //return v1alpha1.ErrNoSavepointPath + } else { + savepointPath = *job.def.Status.LastSavepointPath } if job.def.Status.JarId == nil { err := errors.New("missing jar id") pkg.Logger.Error("[managed-job] [restore]", zap.Error(err)) return err } - pkg.Logger.Info("[managed-job] [restore] restoring job", zap.String("name", job.def.GetName()), zap.String("savepointPath", *job.def.Status.LastSavepointPath)) + pkg.Logger.Info("[managed-job] [restore] restoring job", zap.String("name", job.def.GetName()), zap.String("savepointPath", savepointPath)) var jobId *string for { runJarResp, err := job.client.RunJar(api.RunOpts{ JarID: *job.def.Status.JarId, AllowNonRestoredState: true, EntryClass: job.def.Spec.EntryClass, - SavepointPath: *job.def.Status.LastSavepointPath, + SavepointPath: savepointPath, }) if err != nil { if strings.ContainsAny(err.Error(), ".jar does not exist") {