use of io.camunda.zeebe.broker.system.SystemContext in project zeebe by camunda-cloud.
the class EmbeddedBrokerRule method startBroker.
public void startBroker(final PartitionListener... listeners) {
if (brokerCfg == null) {
try (final InputStream configStream = configSupplier.get()) {
if (configStream == null) {
brokerCfg = new BrokerCfg();
} else {
brokerCfg = new TestConfigurationFactory().create(null, "zeebe.broker", configStream, BrokerCfg.class);
}
configureBroker(brokerCfg);
} catch (final IOException e) {
throw new RuntimeException("Unable to open configuration", e);
}
}
systemContext = new SystemContext(brokerCfg, newTemporaryFolder.getAbsolutePath(), controlledActorClock);
systemContext.getScheduler().start();
final var additionalListeners = new ArrayList<>(Arrays.asList(listeners));
final CountDownLatch latch = new CountDownLatch(brokerCfg.getCluster().getPartitionsCount());
additionalListeners.add(new LeaderPartitionListener(latch));
broker = new Broker(systemContext, springBrokerBridge, additionalListeners);
broker.start().join();
try {
latch.await(INSTALL_TIMEOUT, INSTALL_TIMEOUT_UNIT);
} catch (final InterruptedException e) {
LOG.info("Broker was not started in 15 seconds", e);
Thread.currentThread().interrupt();
}
if (brokerCfg.getGateway().isEnable()) {
try (final var client = ZeebeClient.newClientBuilder().gatewayAddress(NetUtil.toSocketAddressString(getGatewayAddress())).usePlaintext().build()) {
Awaitility.await("until we have a complete topology").untilAsserted(() -> {
final var topology = client.newTopologyRequest().send().join();
TopologyAssert.assertThat(topology).isComplete(brokerCfg.getCluster().getClusterSize(), brokerCfg.getCluster().getPartitionsCount()).isHealthy();
});
}
}
dataDirectory = broker.getSystemContext().getBrokerConfiguration().getData().getDirectory();
}
use of io.camunda.zeebe.broker.system.SystemContext in project zeebe by zeebe-io.
the class EmbeddedBrokerRule method startBroker.
public void startBroker() {
systemContext = new SystemContext(brokerCfg, newTemporaryFolder.getAbsolutePath(), controlledActorClock);
systemContext.getScheduler().start();
final CountDownLatch latch = new CountDownLatch(brokerCfg.getCluster().getPartitionsCount());
broker = new Broker(systemContext, springBrokerBridge, Collections.singletonList(new LeaderPartitionListener(latch)));
broker.start().join();
try {
final boolean hasLeaderPartition = latch.await(timeout.toMillis(), TimeUnit.MILLISECONDS);
assertThat(hasLeaderPartition).describedAs("Expected the broker to have a leader of the partition within %s", timeout).isTrue();
} catch (final InterruptedException e) {
LOG.info("Timeout. Broker was not started within {}", timeout, e);
Thread.currentThread().interrupt();
}
final EmbeddedGatewayService embeddedGatewayService = broker.getBrokerContext().getEmbeddedGatewayService();
if (embeddedGatewayService != null) {
final BrokerClient brokerClient = embeddedGatewayService.get().getBrokerClient();
waitUntil(() -> {
final BrokerTopologyManager topologyManager = brokerClient.getTopologyManager();
final BrokerClusterState topology = topologyManager.getTopology();
return topology != null && topology.getLeaderForPartition(1) >= 0;
});
}
}
use of io.camunda.zeebe.broker.system.SystemContext in project zeebe by camunda.
the class ClusteringRule method createBroker.
private Broker createBroker(final int nodeId) {
final File brokerBase = getBrokerBase(nodeId);
final BrokerCfg brokerCfg = getBrokerCfg(nodeId);
final var systemContext = new SystemContext(brokerCfg, brokerBase.getAbsolutePath(), controlledClock);
systemContexts.put(nodeId, systemContext);
systemContext.getScheduler().start();
final Broker broker = new Broker(systemContext, getSpringBrokerBridge(nodeId), Collections.singletonList(new LeaderListener(partitionLatch, nodeId)));
new Thread(() -> {
broker.start();
}).start();
return broker;
}
use of io.camunda.zeebe.broker.system.SystemContext in project zeebe by camunda-cloud.
the class EmbeddedBrokerRule method startBroker.
public void startBroker() {
systemContext = new SystemContext(brokerCfg, newTemporaryFolder.getAbsolutePath(), controlledActorClock);
systemContext.getScheduler().start();
final CountDownLatch latch = new CountDownLatch(brokerCfg.getCluster().getPartitionsCount());
broker = new Broker(systemContext, springBrokerBridge, Collections.singletonList(new LeaderPartitionListener(latch)));
broker.start().join();
try {
final boolean hasLeaderPartition = latch.await(timeout.toMillis(), TimeUnit.MILLISECONDS);
assertThat(hasLeaderPartition).describedAs("Expected the broker to have a leader of the partition within %s", timeout).isTrue();
} catch (final InterruptedException e) {
LOG.info("Timeout. Broker was not started within {}", timeout, e);
Thread.currentThread().interrupt();
}
final EmbeddedGatewayService embeddedGatewayService = broker.getBrokerContext().getEmbeddedGatewayService();
if (embeddedGatewayService != null) {
final BrokerClient brokerClient = embeddedGatewayService.get().getBrokerClient();
waitUntil(() -> {
final BrokerTopologyManager topologyManager = brokerClient.getTopologyManager();
final BrokerClusterState topology = topologyManager.getTopology();
return topology != null && topology.getLeaderForPartition(1) >= 0;
});
}
}
Aggregations