in src/main/java/com/epam/grid/engine/provider/job/slurm/SlurmJobProvider.java [160:193]
public Listing<DeletedJobInfo> deleteJob(final DeleteJobFilter deleteJobFilter) {
final Map<Long, String> jobOwners = getJobOwners(deleteJobFilter);
if (jobOwners.isEmpty()) {
throw new GridEngineException(HttpStatus.NOT_FOUND,
String.format("No jobs found from the specified %s to remove!", deleteJobFilter));
}
final CommandResult result = simpleCmdExecutor.execute(makeScancelCommand(deleteJobFilter));
if (result.getExitCode() != 0) {
CommandsUtils.throwExecutionDetails(result, HttpStatus.NOT_FOUND);
}
final Set<String> errorDeletingJobs = result.getStdErr().stream()
.filter((s) -> s.startsWith(KILL_JOB_ERROR_PREFIX))
.map((s) -> s.substring(ERROR_JOB_ID_POSITION, s.indexOf(TextConstants.COLON, ERROR_JOB_ID_POSITION)))
.collect(Collectors.toSet());
final List<Long> deletedJobIds = result.getStdErr().stream()
.filter((s) -> s.startsWith(START_TERMINATING_JOB_PREFIX))
.map((s) -> s.substring(JOB_ID_START_POSITION))
.filter((id) -> !errorDeletingJobs.contains(id))
.map(Long::valueOf)
.collect(Collectors.toList());
if (deletedJobIds.isEmpty()) {
CommandsUtils.throwExecutionDetails(result, HttpStatus.NOT_FOUND);
}
if (deletedJobIds.size() < jobOwners.size()) {
log.warn(JOBS_DELETING_EXECUTION_RESULT + result);
}
return new Listing<>(deletedJobIds.stream()
.map(id -> new DeletedJobInfo(id, jobOwners.get(id)))
.collect(Collectors.toList()));
}