public GobblinHelixTask(TaskCallbackContext taskCallbackContext, Optional<ContainerMetrics> containerMetrics,
TaskExecutor taskExecutor, TaskStateTracker taskStateTracker, FileSystem fs, Path appWorkDir,
StateStores stateStores)
throws IOException {
this.taskExecutor = taskExecutor;
this.taskStateTracker = taskStateTracker;
this.taskConfig = taskCallbackContext.getTaskConfig();
this.jobName = this.taskConfig.getConfigMap().get(ConfigurationKeys.JOB_NAME_KEY);
this.jobId = this.taskConfig.getConfigMap().get(ConfigurationKeys.JOB_ID_KEY);
this.jobKey = Long.toString(Id.parse(this.jobId).getSequence());
this.participantId = taskCallbackContext.getManager().getInstanceName();
this.fs = fs;
this.stateStores = stateStores;
Path jobStateFilePath = new Path(appWorkDir, this.jobId + "." + AbstractJobLauncher.JOB_STATE_FILE_NAME);
SerializationUtils.deserializeState(this.fs, jobStateFilePath, this.jobState);
if (containerMetrics.isPresent()) {
this.jobMetrics = Optional.of(JobMetrics.get(this.jobState, containerMetrics.get().getMetricContext()));
} else {
this.jobMetrics = Optional.absent();
}
}