use of alluxio.job.plan.PlanConfig in project alluxio by Alluxio.
the class WorkflowTrackerTest method testCleanup.
@Test
public void testCleanup() throws Exception {
SleepJobConfig jobConfig = new SleepJobConfig(1);
mPlanTracker.run(jobConfig, mCommandManager, mMockJobServerContext, mWorkers, 1);
jobConfig = new SleepJobConfig(1);
mPlanTracker.run(jobConfig, mCommandManager, mMockJobServerContext, mWorkers, 2);
jobConfig = new SleepJobConfig(1);
mPlanTracker.run(jobConfig, mCommandManager, mMockJobServerContext, mWorkers, 3);
doAnswer(invocation -> {
PlanConfig config = invocation.getArgument(0, PlanConfig.class);
long jobId = invocation.getArgument(1, Long.class);
mPlanTracker.run(config, mCommandManager, mMockJobServerContext, mWorkers, jobId);
return null;
}).when(mMockJobMaster).run(any(PlanConfig.class), any(Long.class));
ArrayList<JobConfig> jobs = Lists.newArrayList();
SleepJobConfig child1 = new SleepJobConfig(1);
SleepJobConfig child2 = new SleepJobConfig(2);
jobs.add(child1);
jobs.add(child2);
CompositeConfig config = new CompositeConfig(jobs, false);
mWorkflowTracker.run(config, 0);
try {
mPlanTracker.run(new SleepJobConfig(1), mCommandManager, mMockJobServerContext, mWorkers, 4);
fail();
} catch (ResourceExhaustedException e) {
// Should fail
}
mPlanTracker.coordinators().stream().filter(coordinator -> coordinator.getJobId() == 100).findFirst().get().setJobAsFailed("TestError", "failed");
mPlanTracker.run(new SleepJobConfig(1), mCommandManager, mMockJobServerContext, mWorkers, 4);
assertNotNull(mWorkflowTracker.getStatus(0, true));
try {
mPlanTracker.run(new SleepJobConfig(1), mCommandManager, mMockJobServerContext, mWorkers, 5);
fail();
} catch (ResourceExhaustedException e) {
// Should fail
}
mPlanTracker.coordinators().stream().filter(coordinator -> coordinator.getJobId() == 101).findFirst().get().setJobAsFailed("TestError", "failed");
mPlanTracker.run(new SleepJobConfig(1), mCommandManager, mMockJobServerContext, mWorkers, 5);
assertNull(mWorkflowTracker.getStatus(100, true));
}
use of alluxio.job.plan.PlanConfig in project alluxio by Alluxio.
the class JobMaster method run.
/**
* Runs a job with the given configuration and job id.
*
* @param jobConfig the job configuration
* @param jobId the job id
* @throws JobDoesNotExistException when the job doesn't exist
* @throws ResourceExhaustedException if the job master is too busy to run the job
*/
public synchronized void run(JobConfig jobConfig, long jobId) throws JobDoesNotExistException, ResourceExhaustedException {
// This RPC service implementation triggers another RPC.
// Run the implementation under forked context to avoid interference.
// Then restore the current context at the end.
Context forkedCtx = Context.current().fork();
Context prevCtx = forkedCtx.attach();
try (JobMasterAuditContext auditContext = createAuditContext("run")) {
auditContext.setJobId(jobId);
if (jobConfig instanceof PlanConfig) {
mPlanTracker.run((PlanConfig) jobConfig, mCommandManager, mJobServerContext, getWorkerInfoList(), jobId);
auditContext.setSucceeded(true);
return;
} else if (jobConfig instanceof WorkflowConfig) {
mWorkflowTracker.run((WorkflowConfig) jobConfig, jobId);
auditContext.setSucceeded(true);
return;
}
throw new JobDoesNotExistException(ExceptionMessage.JOB_DEFINITION_DOES_NOT_EXIST.getMessage(jobConfig.getName()));
} finally {
forkedCtx.detach(prevCtx);
}
}
Aggregations