private JobActionResult processAction(Application app, JobExecutionRequestEntity request, JobAction action) throws Exception { log.info(String.format("Executing action %s for request %s", action.getLabel(), request.getJobExecutionRequestId())); ActionType actionType = action.getActionType(); JobActionExecutor executor = executors.get(actionType); if (executor == null) { String msg = String.format("The action type \"%s\" is not supported.", actionType); throw new UnsupportedOperationException(msg); } JobActionResult result; ZonedDateTime startedAt = ZonedDateTime.now(); try { result = executor.execute(request, action, startedAt); } catch (Exception ex) { log.error("Unhandled exception while processing action", ex); result = JobActionResult.fail(action.getLabel(), startedAt, ex, null, null); } request.addResult(result); jobExecutionRequestStore.update(request); return result; } }
private JobExecutionRequest executeJob(Application app, JobExecutionRequestEntity request, JobDefinitionEntity jobDefinitionEntity) throws Exception { for (JobAction action : jobDefinitionEntity.getJobActions()) { JobActionResult result; if (action.getLock() == null) { result = processAction(app, request, action); } else { log.info(String.format("Locking action %s for request %s", action.getLabel(), request.getJobExecutionRequestId())); synchronized (action.getLock().intern()) { result = processAction(app, request, action); } } if (result.hasFailure()) { break; } } // One last update to make sure everything is current. jobExecutionRequestStore.update(request); return request.toJobExecutionRequest(); }
private JobActionResult processOsCommand(Application app, JobExecutionRequestEntity request, JobAction jobAction) { String command = jobAction.getCommand(); ZonedDateTime startedAt = ZonedDateTime.now(); String[] commandArray = ReflectUtils.toArray(String.class, commands); File workingDir = jobAction.getWorkingDirectory(); if (workingDir.exists() == false) { String msg = "The specified working directory does not exist: " + workingDir.getAbsolutePath(); .start(); process.waitFor(jobAction.getTimeout(), jobAction.getTimeoutUnit());
private JobActionResult processAction(Application app, JobExecutionRequestEntity request, JobAction jobAction) throws Exception { ActionType actionType = jobAction.getActionType(); if (actionType.isOsCommand()) { return processOsCommand(app, request, jobAction); } else { String msg = String.format("The action type \"%s\" is not supported.", actionType); throw new UnsupportedOperationException(msg); } }
private JobExecutionRequest executeJob(Application app, JobExecutionRequestEntity request, JobDefinitionEntity jobDefinitionEntity) throws Exception { for (JobAction action : jobDefinitionEntity.getJobActions()) { JobActionResult result; if (action.getLock() == null) { result = processAction(app, request, action); } else { log.info(String.format("Locking action %s for request %s", action.getLabel(), request.getJobExecutionRequestId())); synchronized (action.getLock().intern()) { result = processAction(app, request, action); } } if (result.hasFailure()) { break; } } // One last update to make sure everything is current. jobExecutionRequestStore.update(request); return request.toJobExecutionRequest(); }
private JobActionResult processAction(Application app, JobExecutionRequestEntity request, JobAction action) throws Exception { log.info(String.format("Executing action %s for request %s", action.getLabel(), request.getJobExecutionRequestId())); ActionType actionType = action.getActionType(); JobActionExecutor executor = executors.get(actionType); if (executor == null) { String msg = String.format("The action type \"%s\" is not supported.", actionType); throw new UnsupportedOperationException(msg); } JobActionResult result; ZonedDateTime startedAt = ZonedDateTime.now(); try { result = executor.execute(request, action, startedAt); } catch (Exception ex) { log.error("Unhandled exception while processing action", ex); result = JobActionResult.fail(action.getLabel(), startedAt, ex, null, null); } request.addResult(result); jobExecutionRequestStore.update(request); return result; } }