use of com.hazelcast.jet.JetInstance in project hazelcast-jet by hazelcast.
the class SplitBrainTest method when_newMemberJoinsToCluster_then_jobQuorumSizeIsUpdated.
@Test
public void when_newMemberJoinsToCluster_then_jobQuorumSizeIsUpdated() {
int clusterSize = 3;
JetConfig jetConfig = new JetConfig();
JetInstance[] instances = new JetInstance[clusterSize];
for (int i = 0; i < clusterSize; i++) {
instances[i] = createJetMember(jetConfig);
}
StuckProcessor.executionStarted = new CountDownLatch(clusterSize * PARALLELISM);
MockPS processorSupplier = new MockPS(StuckProcessor::new, clusterSize);
DAG dag = new DAG().vertex(new Vertex("test", processorSupplier));
Job job = instances[0].newJob(dag, new JobConfig().setSplitBrainProtection(true));
assertOpenEventually(StuckProcessor.executionStarted);
createJetMember(jetConfig);
assertTrueEventually(() -> {
JobRepository jobRepository = getJetService(instances[0]).getJobRepository();
JobRecord jobRecord = jobRepository.getJobRecord(job.getId());
assertEquals(3, jobRecord.getQuorumSize());
});
StuckProcessor.proceedLatch.countDown();
}
use of com.hazelcast.jet.JetInstance in project hazelcast-jet by hazelcast.
the class SplitBrainTest method when_newMemberIsAddedAfterClusterSizeFallsBelowQuorumSize_then_jobRestartDoesNotSucceed.
@Test
public void when_newMemberIsAddedAfterClusterSizeFallsBelowQuorumSize_then_jobRestartDoesNotSucceed() {
int clusterSize = 5;
JetConfig jetConfig = new JetConfig();
JetInstance[] instances = new JetInstance[clusterSize];
for (int i = 0; i < clusterSize; i++) {
instances[i] = createJetMember(jetConfig);
}
StuckProcessor.executionStarted = new CountDownLatch(clusterSize * PARALLELISM);
MockPS processorSupplier = new MockPS(StuckProcessor::new, clusterSize);
DAG dag = new DAG().vertex(new Vertex("test", processorSupplier));
Job job = instances[0].newJob(dag, new JobConfig().setSplitBrainProtection(true));
assertOpenEventually(StuckProcessor.executionStarted);
for (int i = 1; i < clusterSize; i++) {
instances[i].getHazelcastInstance().getLifecycleService().terminate();
}
StuckProcessor.proceedLatch.countDown();
assertTrueEventually(() -> assertEquals(RESTARTING, job.getStatus()));
createJetMember(jetConfig);
assertTrueAllTheTime(() -> assertEquals(RESTARTING, job.getStatus()), 5);
}
use of com.hazelcast.jet.JetInstance in project hazelcast-jet by hazelcast.
the class TopologyChangeTest method when_addAndRemoveNodeDuringExecution_then_completeSuccessfully.
@Test
public void when_addAndRemoveNodeDuringExecution_then_completeSuccessfully() throws Throwable {
// Given
DAG dag = new DAG().vertex(new Vertex("test", new MockPS(StuckProcessor::new, nodeCount)));
// When
Job job = instances[0].newJob(dag);
StuckProcessor.executionStarted.await();
JetInstance instance = createJetMember();
instance.shutdown();
StuckProcessor.proceedLatch.countDown();
job.join();
// Then
assertEquals(nodeCount, MockPS.initCount.get());
assertTrueEventually(() -> {
assertEquals(nodeCount, MockPS.closeCount.get());
assertThat(MockPS.receivedCloseErrors, empty());
});
}
use of com.hazelcast.jet.JetInstance in project hazelcast-jet by hazelcast.
the class TopologyChangeTest method when_coordinatorLeavesDuringExecution_then_clientStillGetsJobResult.
@Test
public void when_coordinatorLeavesDuringExecution_then_clientStillGetsJobResult() throws Throwable {
// Given
JetInstance client = createJetClient();
DAG dag = new DAG().vertex(new Vertex("test", new MockPS(StuckProcessor::new, nodeCount)));
// When
Job job = client.newJob(dag);
StuckProcessor.executionStarted.await();
instances[0].getHazelcastInstance().getLifecycleService().terminate();
StuckProcessor.proceedLatch.countDown();
// Then
job.join();
}
use of com.hazelcast.jet.JetInstance in project hazelcast-jet by hazelcast.
the class TopologyChangeTest method when_nodeIsShuttingDownAfterInit_then_jobRestarts.
@Test
public void when_nodeIsShuttingDownAfterInit_then_jobRestarts() {
// Given that the second node has not received ExecuteOperation yet
for (JetInstance instance : instances) {
warmUpPartitions(instance.getHazelcastInstance());
}
rejectOperationsBetween(instances[0].getHazelcastInstance(), instances[2].getHazelcastInstance(), JetInitDataSerializerHook.FACTORY_ID, singletonList(START_EXECUTION_OP));
DAG dag = new DAG().vertex(new Vertex("test", new MockPS(TestProcessors.Identity::new, nodeCount - 1)));
Job job = instances[0].newJob(dag);
assertTrueEventually(() -> assertEquals(RUNNING, job.getStatus()));
// When a participant shuts down during execution
instances[2].shutdown();
// Then, the job restarts and successfully completes
job.join();
}
Aggregations