public void initJob(JobInProgress job) { try { JobStatus prevStatus = (JobStatus)job.getStatus().clone(); job.initTasks(); if (job.isJobEmpty()) { completeEmptyJob(job); } else if (!job.isSetupCleanupRequired()) { job.completeSetup(); } JobStatus newStatus = (JobStatus)job.getStatus().clone(); if (prevStatus.getRunState() != newStatus.getRunState()) { JobStatusChangeEvent event = new JobStatusChangeEvent(job, EventType.RUN_STATE_CHANGED, prevStatus, newStatus); for (JobInProgressListener listener : listeners) { listener.jobUpdated(event); } } } catch (KillInterruptedException kie) { killJob(job.getJobID()); } catch (IOException ioe) { failJob(job); } }
public void initJob(JobInProgress job) { if (null == job) { LOG.info("Init on null job is not valid"); return; } try { JobStatus prevStatus = (JobStatus)job.getStatus().clone(); LOG.info("Initializing " + job.getJobID()); job.initTasks(); // Inform the listeners if the job state has changed // Note : that the job will be in PREP state. JobStatus newStatus = (JobStatus)job.getStatus().clone(); if (prevStatus.getRunState() != newStatus.getRunState()) { JobStatusChangeEvent event = new JobStatusChangeEvent(job, EventType.RUN_STATE_CHANGED, prevStatus, newStatus); synchronized (JobTracker.this) { updateJobInProgressListeners(event); } } } catch (KillInterruptedException kie) { // If job was killed during initialization, job state will be KILLED LOG.error("Job initialization interrupted:\n" + StringUtils.stringifyException(kie)); killJob(job); } catch (Throwable t) { String failureInfo = "Job initialization failed:\n" + StringUtils.stringifyException(t); // If the job initialization is failed, job state will be FAILED LOG.error(failureInfo); job.getStatus().setFailureInfo(failureInfo); failJob(job); } }
private JobInProgress submitJob(int state, int maps, int reduces, String pool) throws IOException { JobInProgress job = submitJobNoInitialization(state, maps, reduces, pool); try { job.initTasks(); } catch (KillInterruptedException e) { } scheduler.update(); return job; }
public void initJob(JobInProgress job) { if (null == job) { LOG.info("Init on null job is not valid"); return; } try { JobStatus prevStatus = (JobStatus)job.getStatus().clone(); LOG.info("Initializing " + job.getJobID()); job.initTasks(); // Inform the listeners if the job state has changed // Note : that the job will be in PREP state. JobStatus newStatus = (JobStatus)job.getStatus().clone(); if (prevStatus.getRunState() != newStatus.getRunState()) { JobStatusChangeEvent event = new JobStatusChangeEvent(job, EventType.RUN_STATE_CHANGED, prevStatus, newStatus); synchronized (JobTracker.this) { updateJobInProgressListeners(event); } } } catch (KillInterruptedException kie) { // If job was killed during initialization, job state will be KILLED LOG.error("Job initialization interrupted:\n" + StringUtils.stringifyException(kie)); killJob(job); } catch (Throwable t) { // If the job initialization is failed, job state will be FAILED LOG.error("Job initialization failed:\n" + StringUtils.stringifyException(t)); failJob(job); } }
public void initJob(JobInProgress job) { if (null == job) { LOG.info("Init on null job is not valid"); return; } try { JobStatus prevStatus = (JobStatus)job.getStatus().clone(); LOG.info("Initializing " + job.getJobID()); job.initTasks(); // Here the job *should* be in the PREP state. // From here there are 3 ways : // - job requires setup : the job remains in PREP state and // setup is launched to move the job in RUNNING state // - job is complete (no setup required and no tasks) : complete // the job and move it to SUCCEEDED // - job has tasks but doesnt require setup : make the job RUNNING. if (job.isJobEmpty()) { // is the job empty? completeEmptyJob(job); // complete it } else if (!job.isSetupCleanupRequired()) { // setup/cleanup not required job.completeSetup(); // complete setup and make job running } // Inform the listeners if the job state has changed // Note : that the job will be in PREP state. JobStatus newStatus = (JobStatus)job.getStatus().clone(); if (prevStatus.getRunState() != newStatus.getRunState()) { JobStatusChangeEvent event = new JobStatusChangeEvent(job, EventType.RUN_STATE_CHANGED, prevStatus, newStatus); synchronized (JobTracker.this) { updateJobInProgressListeners(event); } } } catch (KillInterruptedException kie) { // If job was killed during initialization, job state will be KILLED LOG.error(job.getJobID() + ": Job initialization interrupted:\n" + StringUtils.stringifyException(kie)); killJob(job); } catch (Throwable t) { // If the job initialization is failed, job state will be FAILED LOG.error(job.getJobID() + ": Job initialization failed:\n" + StringUtils.stringifyException(t)); failJob(job); } }
/** * Initialize a job and inform the listeners about a state change, if any. * Other components in the framework should use this api to initialize a job. */ public void initJob(JobInProgress job) { if (null == job) { LOG.info("Init on null job is not valid"); return; } try { JobStatus prevStatus = (JobStatus)job.getStatus().clone(); LOG.info("Initializing " + job.getJobID()); job.initTasks(); // Here the job *should* be in the PREP state. // From here there are 3 ways : // - job requires setup : the job remains in PREP state and // setup is launched to move the job in RUNNING state // - job is complete (no setup required and no tasks) : complete // the job and move it to SUCCEEDED // - job has tasks but doesnt require setup : make the job RUNNING. if (job.isJobEmpty()) { // is the job empty? completeEmptyJob(job); // complete it } else if (!job.isSetupCleanupRequired()) { // setup/cleanup not required job.completeSetup(); // complete setup and make job running } // Inform the listeners if the job state has changed // Note : // If job does not require setup, job state will be RUNNING // If job is configured with 0 maps, 0 reduces and no setup-cleanup then // the job state will be SUCCEEDED // otherwise, job state is PREP. JobStatus newStatus = (JobStatus)job.getStatus().clone(); if (prevStatus.getRunState() != newStatus.getRunState()) { JobStatusChangeEvent event = new JobStatusChangeEvent(job, EventType.RUN_STATE_CHANGED, prevStatus, newStatus); synchronized (JobTracker.this) { updateJobInProgressListeners(event); } } } catch (KillInterruptedException kie) { // If job was killed during initialization, job state will be KILLED LOG.error("Job initialization interrupted :\n" + StringUtils.stringifyException(kie)); killJob(job); } catch (Throwable t) { // If the job initialization is failed, job state will be FAILED LOG.error("Job initialization failed:\n" + StringUtils.stringifyException(t)); failJob(job); } }