@Override public void jobsRejected(List<String> jobIds, ProcessEngineImpl processEngine, JobExecutor jobExecutor) { AcquireJobsRunnable acquireJobsRunnable = jobExecutor.getAcquireJobsRunnable(); if (acquireJobsRunnable instanceof SequentialJobAcquisitionRunnable) { JobAcquisitionContext context = ((SequentialJobAcquisitionRunnable) acquireJobsRunnable).getAcquisitionContext(); context.submitRejectedBatch(processEngine.getName(), jobIds); } else { jobExecutor.getExecuteJobsRunnable(jobIds, processEngine).run(); } }
@Override public void jobsRejected(List<String> jobIds, ProcessEngineImpl processEngine, JobExecutor jobExecutor) { AcquireJobsRunnable acquireJobsRunnable = jobExecutor.getAcquireJobsRunnable(); if (acquireJobsRunnable instanceof SequentialJobAcquisitionRunnable) { JobAcquisitionContext context = ((SequentialJobAcquisitionRunnable) acquireJobsRunnable).getAcquisitionContext(); context.submitRejectedBatch(processEngine.getName(), jobIds); } else { jobExecutor.getExecuteJobsRunnable(jobIds, processEngine).run(); } }
@Test public void testWaitTimeOnFullRejection() { // given a job acquisition strategy and a job acquisition context // with acquired jobs all of which have been rejected for execution JobAcquisitionContext context = new JobAcquisitionContext(); AcquiredJobs acquiredJobs = buildAcquiredJobs(NUM_JOBS_TO_ACQUIRE, NUM_JOBS_TO_ACQUIRE, 0); context.submitAcquiredJobs(ENGINE_NAME, acquiredJobs); for (int i = 0; i < NUM_JOBS_TO_ACQUIRE; i++) { context.submitRejectedBatch(ENGINE_NAME, acquiredJobs.getJobIdBatches().get(i)); } // when reconfiguring the strategy strategy.reconfigure(context); // then there is a slight wait time to avoid constant spinning while // no execution resources are available Assert.assertEquals(BackoffJobAcquisitionStrategy.DEFAULT_EXECUTION_SATURATION_WAIT_TIME, strategy.getWaitTime()); }
@Test public void testAcquireLessJobsOnRejection() { // given a job acquisition strategy and a job acquisition context // with acquired jobs, some of which have been rejected for execution JobAcquisitionContext context = new JobAcquisitionContext(); AcquiredJobs acquiredJobs = buildAcquiredJobs(NUM_JOBS_TO_ACQUIRE, NUM_JOBS_TO_ACQUIRE, 0); context.submitAcquiredJobs(ENGINE_NAME, acquiredJobs); // when half of the jobs are rejected int numJobsRejected = 5; for (int i = 0; i < numJobsRejected; i++) { context.submitRejectedBatch(ENGINE_NAME, acquiredJobs.getJobIdBatches().get(i)); } // then the strategy only attempts to acquire the number of jobs that were successfully submitted strategy.reconfigure(context); Assert.assertEquals(NUM_JOBS_TO_ACQUIRE - numJobsRejected, strategy.getNumJobsToAcquire(ENGINE_NAME)); // without a timeout Assert.assertEquals(0, strategy.getWaitTime()); }
@Override public void jobsRejected(List<String> jobIds, ProcessEngineImpl processEngine, JobExecutor jobExecutor) { AcquireJobsRunnable acquireJobsRunnable = jobExecutor.getAcquireJobsRunnable(); if (acquireJobsRunnable instanceof SequentialJobAcquisitionRunnable) { JobAcquisitionContext context = ((SequentialJobAcquisitionRunnable) acquireJobsRunnable).getAcquisitionContext(); context.submitRejectedBatch(processEngine.getName(), jobIds); } else { jobExecutor.getExecuteJobsRunnable(jobIds, processEngine).run(); } }
@Test public void testWaitTimeOnFullRejection() { // given a job acquisition strategy and a job acquisition context // with acquired jobs all of which have been rejected for execution JobAcquisitionContext context = new JobAcquisitionContext(); AcquiredJobs acquiredJobs = buildAcquiredJobs(NUM_JOBS_TO_ACQUIRE, NUM_JOBS_TO_ACQUIRE, 0); context.submitAcquiredJobs(ENGINE_NAME, acquiredJobs); for (int i = 0; i < NUM_JOBS_TO_ACQUIRE; i++) { context.submitRejectedBatch(ENGINE_NAME, acquiredJobs.getJobIdBatches().get(i)); } // when reconfiguring the strategy strategy.reconfigure(context); // then there is a slight wait time to avoid constant spinning while // no execution resources are available Assert.assertEquals(BackoffJobAcquisitionStrategy.DEFAULT_EXECUTION_SATURATION_WAIT_TIME, strategy.getWaitTime()); }
@Test public void testAcquireLessJobsOnRejection() { // given a job acquisition strategy and a job acquisition context // with acquired jobs, some of which have been rejected for execution JobAcquisitionContext context = new JobAcquisitionContext(); AcquiredJobs acquiredJobs = buildAcquiredJobs(NUM_JOBS_TO_ACQUIRE, NUM_JOBS_TO_ACQUIRE, 0); context.submitAcquiredJobs(ENGINE_NAME, acquiredJobs); // when half of the jobs are rejected int numJobsRejected = 5; for (int i = 0; i < numJobsRejected; i++) { context.submitRejectedBatch(ENGINE_NAME, acquiredJobs.getJobIdBatches().get(i)); } // then the strategy only attempts to acquire the number of jobs that were successfully submitted strategy.reconfigure(context); Assert.assertEquals(NUM_JOBS_TO_ACQUIRE - numJobsRejected, strategy.getNumJobsToAcquire(ENGINE_NAME)); // without a timeout Assert.assertEquals(0, strategy.getWaitTime()); }