@@ -661,13 +661,15 @@ func (r *ScanReconciler) startPersistenceProvider(scan *executionv1.Scan) error
661661 return nil
662662}
663663
664- func allJobsCompleted (jobs * batch.JobList ) bool {
664+ func allJobsCompleted (jobs * batch.JobList ) jobCompletionType {
665665 for _ , job := range jobs .Items {
666- if job .Status .Succeeded == 0 {
667- return false
666+ if job .Status .Failed > 0 {
667+ return failed
668+ } else if job .Status .Succeeded == 0 {
669+ return incomplete
668670 }
669671 }
670- return true
672+ return incomplete
671673}
672674
673675func (r * ScanReconciler ) checkIfPersistingIsCompleted (scan * executionv1.Scan ) error {
@@ -690,13 +692,22 @@ func (r *ScanReconciler) checkIfPersistingIsCompleted(scan *executionv1.Scan) er
690692
691693 r .Log .V (9 ).Info ("Got related jobs" , "count" , len (childPersistenceJobs .Items ))
692694
693- if allJobsCompleted (& childPersistenceJobs ) {
694- r .Log .V (7 ).Info ("Parsing is completed" )
695+ persistenceCompletion := allJobsCompleted (& childPersistenceJobs )
696+ if persistenceCompletion == completed {
697+ r .Log .V (7 ).Info ("All PersistenceProviders have completed" )
695698 scan .Status .State = "Done"
696699 if err := r .Status ().Update (ctx , scan ); err != nil {
697700 r .Log .Error (err , "unable to update Scan status" )
698701 return err
699702 }
703+ } else if persistenceCompletion == failed {
704+ r .Log .Info ("At least one PersistenceProvider failed" )
705+ scan .Status .State = "Errored"
706+ scan .Status .ErrorDescription = "At least one PersistenceProvider failed, check the persistence kubernets jobs related to the scan for more details."
707+ if err := r .Status ().Update (ctx , scan ); err != nil {
708+ r .Log .Error (err , "unable to update Scan status" )
709+ return err
710+ }
700711 }
701712
702713 // PersistenceProvider(s) are still running. At least some of them are.
0 commit comments