// System.out.println("Finishing a job!");
ComputationTaskExecutionJob job = quad.getE1();
ComputationTaskRuntimeInformation compTaskRTI = quad.getE2();
TaskConfiguration taskConfig = quad.getE3();
RunInformation results = quad.getE4();
// if we have a data storage attached we will inform the storage that no
// more data for this computation task will be written
if (taskConfig.hasDataStorage()) {
taskConfig.createPlainDataStorage().computationTaskDone(
results.getComputationTaskID().getId());
}
// get the run information for the task configuration
List<RunInformation> runInfo = getRunInfos().get(taskConfig);
// add the results to this run information
runInfo.add(results);
// schedule further jobs (if required; will be determined by the
// method
// called)
scheduleNewJobs(taskConfig, runInfo);
// check once more for stop as scheduleNewJobs might need some time
// (e.g., due to replication criteria ...)
if (stop) {
stopped();
return;
}
// flag to determine whether the TaskConfiguration is finished
// (no
// replications are left)
boolean jobDone = true;
if ((jobs.get(taskConfig).size() > 1)) {
jobDone = false;
} else {
results.setJobDone(true);
}
// get the execution controller of the
// ComputationTaskConfiguration
IExperimentExecutionController execControl =