use of org.apache.flink.runtime.dispatcher.cleanup.TestingCleanupRunnerFactory in project flink by apache.
the class MiniDispatcherTest method setup.
@Before
public void setup() throws Exception {
highAvailabilityServices = new TestingHighAvailabilityServicesBuilder().build();
testingJobManagerRunnerFactory = new TestingJobMasterServiceLeadershipRunnerFactory();
testingCleanupRunnerFactory = new TestingCleanupRunnerFactory();
}
use of org.apache.flink.runtime.dispatcher.cleanup.TestingCleanupRunnerFactory in project flink by apache.
the class DispatcherTest method testJobCleanupWithoutRecoveredJobGraph.
@Test
public void testJobCleanupWithoutRecoveredJobGraph() throws Exception {
final JobID jobIdOfRecoveredDirtyJobs = new JobID();
final TestingJobMasterServiceLeadershipRunnerFactory jobManagerRunnerFactory = new TestingJobMasterServiceLeadershipRunnerFactory();
final TestingCleanupRunnerFactory cleanupRunnerFactory = new TestingCleanupRunnerFactory();
final OneShotLatch dispatcherBootstrapLatch = new OneShotLatch();
dispatcher = createTestingDispatcherBuilder().setJobManagerRunnerFactory(jobManagerRunnerFactory).setCleanupRunnerFactory(cleanupRunnerFactory).setRecoveredDirtyJobs(Collections.singleton(new JobResult.Builder().jobId(jobIdOfRecoveredDirtyJobs).applicationStatus(ApplicationStatus.SUCCEEDED).netRuntime(1).build())).setDispatcherBootstrapFactory((ignoredDispatcherGateway, ignoredScheduledExecutor, ignoredFatalErrorHandler) -> {
dispatcherBootstrapLatch.trigger();
return new NoOpDispatcherBootstrap();
}).build();
dispatcher.start();
dispatcherBootstrapLatch.await();
final TestingJobManagerRunner cleanupRunner = cleanupRunnerFactory.takeCreatedJobManagerRunner();
assertThat("The CleanupJobManagerRunner has the wrong job ID attached.", cleanupRunner.getJobID(), is(jobIdOfRecoveredDirtyJobs));
assertThat("No JobMaster should have been started.", jobManagerRunnerFactory.getQueueSize(), is(0));
}
use of org.apache.flink.runtime.dispatcher.cleanup.TestingCleanupRunnerFactory in project flink by apache.
the class DefaultDispatcherRunnerITCase method leaderChange_withBlockingJobManagerTermination_doesNotAffectNewLeader.
/**
* See FLINK-11843. This is a probabilistic test which needs to be executed several times to
* fail.
*/
@Test
public void leaderChange_withBlockingJobManagerTermination_doesNotAffectNewLeader() throws Exception {
final TestingJobMasterServiceLeadershipRunnerFactory jobManagerRunnerFactory = new TestingJobMasterServiceLeadershipRunnerFactory(1);
final TestingCleanupRunnerFactory cleanupRunnerFactory = new TestingCleanupRunnerFactory();
dispatcherRunnerFactory = DefaultDispatcherRunnerFactory.createSessionRunner(new TestingDispatcherFactory(jobManagerRunnerFactory, cleanupRunnerFactory));
jobGraphStore = new SingleJobJobGraphStore(jobGraph);
try (final DispatcherRunner dispatcherRunner = createDispatcherRunner()) {
// initial run
dispatcherLeaderElectionService.isLeader(UUID.randomUUID()).get();
final TestingJobManagerRunner testingJobManagerRunner = jobManagerRunnerFactory.takeCreatedJobManagerRunner();
dispatcherLeaderElectionService.notLeader();
LOG.info("Re-grant leadership first time.");
dispatcherLeaderElectionService.isLeader(UUID.randomUUID());
// give the Dispatcher some time to recover jobs
Thread.sleep(1L);
dispatcherLeaderElectionService.notLeader();
LOG.info("Re-grant leadership second time.");
final UUID leaderSessionId = UUID.randomUUID();
final CompletableFuture<UUID> leaderFuture = dispatcherLeaderElectionService.isLeader(leaderSessionId);
assertThat(leaderFuture.isDone(), is(false));
LOG.info("Complete the termination of the first job manager runner.");
testingJobManagerRunner.completeTerminationFuture();
assertThat(leaderFuture.get(TIMEOUT.toMilliseconds(), TimeUnit.MILLISECONDS), is(equalTo(leaderSessionId)));
// Wait for job to recover...
final DispatcherGateway leaderGateway = rpcServiceResource.getTestingRpcService().connect(dispatcherLeaderElectionService.getAddress(), DispatcherId.fromUuid(leaderSessionId), DispatcherGateway.class).get();
assertEquals(jobGraph.getJobID(), Iterables.getOnlyElement(leaderGateway.listJobs(TIMEOUT).get()));
}
}
Aggregations