private synchronized void updateFlow(long time) { try { flow.setUpdateTime(time); executorLoader.updateExecutableFlow(flow); } catch (ExecutorManagerException e) { logger.error("Error updating flow.", e); } }
public void retryJobs(List<String> jobIds, String user) { synchronized (mainSyncObj) { for (String jobId : jobIds) { ExecutableNode node = flow.getExecutableNode(jobId); if (node == null) { logger.error( "Job " + jobId + " doesn't exist in execution " + flow.getExecutionId() + ". Cannot retry."); continue; } if (Status.isStatusFinished(node.getStatus())) { // Resets the status and increments the attempt number node.resetForRetry(); reEnableDependents(node); logger.info("Re-enabling job " + node.getJobId() + " attempt " + node.getAttempt()); } else { logger.error("Cannot retry job " + jobId + " since it hasn't run yet. User " + user); continue; } } boolean isFailureFound = false; for (ExecutableNode node : flow.getExecutableNodes()) { Status nodeStatus = node.getStatus(); if (nodeStatus == Status.FAILED || nodeStatus == Status.KILLED) { isFailureFound = true; break; } } if (!isFailureFound) { flow.setStatus(Status.RUNNING); flow.setUpdateTime(System.currentTimeMillis()); flowFailed = false; } updateFlow(); interrupt(); } }