package managed_job import ( "time" "gitea.com/logicamp/lc" "go.uber.org/zap" ) // func (job *ManagedJob) startCycle() { // ticker := time.NewTicker(5 * time.Second) // quit := make(chan struct{}) // // load job state from db // job.loadState() // go func() { // for { // select { // case <-ticker.C: // job.cycle() // case <-quit: // ticker.Stop() // return // } // } // }() // } func (job *ManagedJob) Cycle() { lc.Logger.Debug("[managed-job] [new] check cycle", zap.String("jobKey", string(job.def.UID))) // Init job if job.state == nil { err := job.upload() if err != nil { job.setError("[upload-error] " + err.Error()) return } err = job.run() if err != nil { job.setError("[run-error] " + err.Error()) return } return } job.crd.SetJobStatus(job.def.UID, string(job.state.Status)) // Check for set running or error state /* if job.state.Status == JobStatusCreating || job.state.Status == JobStatusFailing { err := job.checkStatus() if errors.Is(err, ErrNoJobId) { job.state = nil } return } */ if job.state.Status == JobStatusRunning { if (job.def.Spec.SavepointInterval.Duration != 0) && ((job.state.LastSavepointDate == nil) || time.Now().Add(-job.def.Spec.SavepointInterval.Duration).After(*job.state.LastSavepointDate)) { if job.state.SavepointTriggerId == nil { job.createSavepoint() } else { job.trackSavepoint() } } return } if job.state.Status == JobStatusFailed { job.restore() return } lc.Logger.Warn("[managed-job] [cycle]", zap.String("unhanded job status", string(job.state.Status))) }