code: def _processFailedSuccessors(self, jobGraph):
          
  
          if jobGraph.jobStoreID in self.toilState.servicesIssued:
              # The job has services running, signal for them to be killed
              # once they are killed then the jobGraph will be re-added to
              # the updatedJobs set and then scheduled to be removed
              logger.debug("Telling job: %s to terminate its services due to successor failure",
                           jobGraph.jobStoreID)
              self.serviceManager.killServices(self.toilState.servicesIssued[jobGraph.jobStoreID],
                                               error=True)
          elif jobGraph.jobStoreID in self.toilState.successorCounts:
              # The job has non-service jobs running wait for them to finish
              # the job will be re-added to the updated jobs when these jobs
              # are done
              logger.debug("Job %s with ID: %s with failed successors still has successor jobs running",
                           jobGraph, jobGraph.jobStoreID)
          elif jobGraph.checkpoint is not None and jobGraph.remainingRetryCount > 1:
              # If the job is a checkpoint and has remaining retries then reissue it.
              # The logic behind using > 1 rather than > 0 here: Since this job has
              # been tried once (without decreasing its retry count as the job
              # itself was successful), and its subtree failed, it shouldn't be retried
              # unless it has more than 1 try.
              logger.warn('Job: %s is being restarted as a checkpoint after the total '
                          'failure of jobs in its subtree.', jobGraph.jobStoreID)
              self.issueJob(JobNode.fromJobGraph(jobGraph))
          else:
              # Mark it totally failed
              logger.debug("Job %s is being processed as completely failed", jobGraph.jobStoreID)
              self.processTotallyFailedJob(jobGraph)
docs: Some of the jobs successors failed then either fail the job
          or restart it if it has retries left and is a checkpoint job