public ForkEnvironment createForkEnvironment() throws InvalidScriptException { ForkEnvironment forkEnv = new ForkEnvironment(); forkEnv.setJavaHome(javaHome); forkEnv.setWorkingDir(workingDir); List<String> additionalClasspath = getAdditionalClasspath(); if (additionalClasspath != null) { for (String classpath : additionalClasspath) { forkEnv.addAdditionalClasspath(classpath); } } List<String> jvmArguments = getJvmArguments(); if (jvmArguments != null) { for (String jvmArg : jvmArguments) { forkEnv.addJVMArgument(jvmArg); } } List<EnvironmentModifierData> envModifiers = getEnvModifiers(); if (envModifiers != null) { for (EnvironmentModifierData envModifier : envModifiers) { forkEnv.addSystemEnvironmentVariable(envModifier.getName(), envModifier.getValue()); } } if (envScript != null) { forkEnv.setEnvScript(envScript.createSimpleScript()); } return forkEnv; }
InternalTask toInternalTask(InternalJob internalJob) throws InvalidScriptException { TaskId taskId = createTaskId(internalJob); InternalTask internalTask; if (taskType.equals(SCRIPT_TASK)) { internalTask = new InternalScriptTask(); } else if (taskType.equals(FORKED_SCRIPT_TASK)) { internalTask = new InternalForkedScriptTask(); } else { throw new IllegalStateException("Unexpected stored task type: " + taskType); } internalTask.setId(taskId); internalTask.setDescription(getDescription()); internalTask.setStatus(getTaskStatus()); internalTask.setJobInfo(internalJob.getJobInfo()); internalTask.setName(getTaskName()); internalTask.setExecutionDuration(getExecutionDuration()); internalTask.setFinishedTime(getFinishedTime()); internalTask.setStartTime(getStartTime()); internalTask.setExecutionHostName(getExecutionHostName()); internalTask.setCancelJobOnError(isCancelJobOnError()); internalTask.setPreciousLogs(isPreciousLogs()); internalTask.setPreciousResult(isPreciousResult()); internalTask.setRunAsMe(isRunAsMe()); internalTask.setWallTime(getWallTime()); internalTask.setMaxNumberOfExecution(getMaxNumberOfExecution()); internalTask.setRestartTaskOnError(getRestartMode()); internalTask.setFlowBlock(getFlowBlock()); internalTask.setIterationIndex(getIteration()); internalTask.setReplicationIndex(getReplication()); internalTask.setMatchingBlock(getMatchingBlock()); ForkEnvironment forkEnv = new ForkEnvironment(); forkEnv.setJavaHome(javaHome); List<String> additionalClasspath = getAdditionalClasspath(); if (additionalClasspath != null) { for (String classpath : additionalClasspath) { forkEnv.addAdditionalClasspath(classpath); } } List<String> jvmArguments = getJvmArguments(); if (jvmArguments != null) { for (String jvmArg : jvmArguments) { forkEnv.addJVMArgument(jvmArg); } } List<EnvironmentModifierData> envModifiers = getEnvModifiers(); if (envModifiers != null) { for (EnvironmentModifierData envModifier : envModifiers) { forkEnv.addSystemEnvironmentVariable(envModifier.getName(), envModifier.getValue()); } } if (envScript != null) { forkEnv.setEnvScript(envScript.createSimpleScript()); } internalTask.setForkEnvironment(forkEnv); return internalTask; }
static TaskData createTaskData(JobData jobRuntimeData, InternalScriptTask task) { TaskData taskData = new TaskData(); TaskData.DBTaskId taskId = new DBTaskId(); taskId.setJobId(jobRuntimeData.getId()); taskId.setTaskId(task.getTaskInfo().getTaskId().longValue()); taskData.setId(taskId); taskData.setDescription(task.getDescription()); taskData.setParallelEnvironment(task.getParallelEnvironment()); taskData.setFlowBlock(task.getFlowBlock()); taskData.setRestartMode(task.getRestartTaskOnError()); taskData.setPreciousLogs(task.isPreciousLogs()); taskData.setPreciousResult(task.isPreciousResult()); taskData.setRunAsMe(task.isRunAsMe()); taskData.setWallTime(task.getWallTime()); taskData.setCancelJobOnError(task.isCancelJobOnError()); taskData.setMaxNumberOfExecution(task.getMaxNumberOfExecution()); taskData.setJobData(jobRuntimeData); taskData.setNumberOfExecutionOnFailureLeft( PASchedulerProperties.NUMBER_OF_EXECUTION_ON_FAILURE.getValueAsInt()); taskData.setNumberOfExecutionLeft(task.getMaxNumberOfExecution()); taskData.setGenericInformation(task.getGenericInformations(false)); taskData.updateMutableAttributes(task); if (task.getSelectionScripts() != null) { List<SelectionScriptData> scripts = new ArrayList<>(task.getSelectionScripts().size()); for (SelectionScript selectionScript : task.getSelectionScripts()) { scripts.add(SelectionScriptData.createForSelectionScript(selectionScript, taskData)); } taskData.setSelectionScripts(scripts); } if (task.getExecutableContainer() != null) { taskData.setScript( ScriptData.createForScript( ((ScriptExecutableContainer) task.getExecutableContainer()).getScript(), taskData)); } if (task.getPreScript() != null) { taskData.setPreScript(ScriptData.createForScript(task.getPreScript(), taskData)); } if (task.getPostScript() != null) { taskData.setPostScript(ScriptData.createForScript(task.getPostScript(), taskData)); } if (task.getCleaningScript() != null) { taskData.setCleanScript(ScriptData.createForScript(task.getCleaningScript(), taskData)); } if (task.getFlowScript() != null) { taskData.setFlowScript(ScriptData.createForFlowScript(task.getFlowScript(), taskData)); } List<SelectorData> selectorsData = new ArrayList<>(); if (task.getInputFilesList() != null) { for (InputSelector selector : task.getInputFilesList()) { selectorsData.add(SelectorData.createForInputSelector(selector, taskData)); } } if (task.getOutputFilesList() != null) { for (OutputSelector selector : task.getOutputFilesList()) { selectorsData.add(SelectorData.createForOutputSelector(selector, taskData)); } } taskData.setDataspaceSelectors(selectorsData); ForkEnvironment forkEnvironment = task.getForkEnvironment(); if (forkEnvironment != null) { taskData.setAdditionalClasspath(forkEnvironment.getAdditionalClasspath()); taskData.setJavaHome(forkEnvironment.getJavaHome()); taskData.setJvmArguments(forkEnvironment.getJVMArguments()); taskData.setWorkingDir(forkEnvironment.getWorkingDir()); if (forkEnvironment.getEnvScript() != null) { taskData.setEnvScript(ScriptData.createForScript(forkEnvironment.getEnvScript(), taskData)); } Map<String, String> systemEnvironment = forkEnvironment.getSystemEnvironment(); if (systemEnvironment != null) { List<EnvironmentModifierData> envModifiers = new ArrayList<>(systemEnvironment.size()); for (Map.Entry<String, String> entry : systemEnvironment.entrySet()) { envModifiers.add( EnvironmentModifierData.create( new PropertyModifier(entry.getKey(), entry.getValue()), taskData)); } taskData.setEnvModifiers(envModifiers); } } taskData.initTaskType(task); return taskData; }