@Override public DistributeJobResult call() throws Exception { String planningId = getPlanningJobId(this.jobPlanningProps); JobConfig.Builder builder = createJobBuilder(this.jobPlanningProps); try { long submitStartTime = System.currentTimeMillis(); GobblinHelixDistributeJobExecutionLauncher.this.helixMetrics.submitMeter.mark(); submitJobToHelix(planningId, planningId, builder); GobblinHelixDistributeJobExecutionLauncher.this.helixMetrics.updateTimeForHelixSubmit(submitStartTime); long waitStartTime = System.currentTimeMillis(); DistributeJobResult rst = waitForJobCompletion(planningId, planningId); GobblinHelixDistributeJobExecutionLauncher.this.helixMetrics.updateTimeForHelixWait(waitStartTime); return rst; } catch (Exception e) { log.error(planningId + " is not able to submit."); return new DistributeJobResult(false); } } }
protected DistributeJobResult getResultFromUserContent() { DistributeJobResult rst = super.getResultFromUserContent(); Assert.assertTrue(!rst.isEarlyStopped()); String jobName = this.jobPlanningProps.getProperty(ConfigurationKeys.JOB_NAME_KEY); try { Assert.assertFalse(this.jobsMapping.getPlanningJobId(jobName).isPresent()); } catch (Exception e) { Assert.fail(e.toString()); } IntegrationJobFactorySuite.completed.set(true); return rst; }
this.currentJobMonitor = launcher.launchJob(null); ExecutionResult result = this.currentJobMonitor.get(); boolean isEarlyStopped = ((GobblinHelixDistributeJobExecutionLauncher.DistributeJobResult) result).isEarlyStopped(); boolean isRetriggerEnabled = this.isRetriggeringEnabled(); if (isEarlyStopped && isRetriggerEnabled) {
private DistributeJobResult waitForJobCompletion(String workFlowName, String jobName) throws InterruptedException { boolean timeoutEnabled = Boolean.parseBoolean(this.jobPlanningProps.getProperty(GobblinClusterConfigurationKeys.HELIX_JOB_TIMEOUT_ENABLED_KEY, GobblinClusterConfigurationKeys.DEFAULT_HELIX_JOB_TIMEOUT_ENABLED)); long timeoutInSeconds = Long.parseLong(this.jobPlanningProps.getProperty(GobblinClusterConfigurationKeys.HELIX_JOB_TIMEOUT_SECONDS, GobblinClusterConfigurationKeys.DEFAULT_HELIX_JOB_TIMEOUT_SECONDS)); try { HelixUtils.waitJobCompletion( GobblinHelixDistributeJobExecutionLauncher.this.helixManager, workFlowName, jobName, timeoutEnabled ? Optional.of(timeoutInSeconds) : Optional.empty()); return getResultFromUserContent(); } catch (TimeoutException te) { HelixUtils.handleJobTimeout(workFlowName, jobName, helixManager, this, null); return new DistributeJobResult(Optional.empty(), Optional.of(te)); } }
@Override public DistributeJobResult call() throws Exception { String planningId = getPlanningJobId(this.jobPlanningProps); JobConfig.Builder builder = createJobBuilder(this.jobPlanningProps); try { submitJobToHelix(planningId, planningId, builder); return waitForJobCompletion(planningId, planningId); } catch (Exception e) { log.error(planningId + " is not able to submit."); return new DistributeJobResult(Optional.empty(), Optional.of(e)); } } }
@VisibleForTesting protected DistributeJobResult getResultFromUserContent() { String planningId = getPlanningJobId(this.jobPlanningProps); try { TaskState taskState = this.stateStores.getTaskStateStore().get(planningId, planningId, planningId); return new DistributeJobResult(Optional.of(taskState.getProperties()), Optional.empty()); } catch (IOException e) { return new DistributeJobResult(Optional.empty(), Optional.of(e)); } }
private DistributeJobResult waitForJobCompletion(String workFlowName, String jobName) throws InterruptedException { boolean timeoutEnabled = Boolean.parseBoolean(this.jobPlanningProps.getProperty( GobblinClusterConfigurationKeys.HELIX_JOB_TIMEOUT_ENABLED_KEY, GobblinClusterConfigurationKeys.DEFAULT_HELIX_JOB_TIMEOUT_ENABLED)); long timeoutInSeconds = Long.parseLong(this.jobPlanningProps.getProperty( GobblinClusterConfigurationKeys.HELIX_JOB_TIMEOUT_SECONDS, GobblinClusterConfigurationKeys.DEFAULT_HELIX_JOB_TIMEOUT_SECONDS)); try { HelixUtils.waitJobCompletion( GobblinHelixDistributeJobExecutionLauncher.this.planningJobHelixManager, workFlowName, jobName, timeoutEnabled ? Optional.of(timeoutInSeconds) : Optional.empty()); return getResultFromUserContent(); } catch (TimeoutException te) { HelixUtils.handleJobTimeout(workFlowName, jobName, planningJobHelixManager, this, null); return new DistributeJobResult(false); } }
protected DistributeJobResult getResultFromUserContent() { return new DistributeJobResult(false); }