Search in sources :

Example 1 with LogStreamsManager

use of io.zeebe.broker.logstreams.LogStreamsManager in project zeebe by zeebe-io.

the class ClusterManagerContextService method start.

@Override
public void start(ServiceStartContext startContext) {
    final ClientTransport clientTransport = managementClientInjector.getValue();
    final BufferingServerTransport serverTransport = managementApiTransportInjector.getValue();
    final ActorScheduler actorScheduler = startContext.getScheduler();
    final LogStreamsManager logStreamsManager = logStreamsManagerInjector.getValue();
    final WorkflowRequestMessageHandler workflowRequestMessageHandler = workflowRequestMessageHandlerInjector.getValue();
    context = new ClusterManagerContext();
    context.setGossip(gossipInjector.getValue());
    context.setActorScheduler(actorScheduler);
    context.setManagementClient(clientTransport);
    context.setReplicationClient(replicationClientInjector.getValue());
    context.setServerTransport(serverTransport);
    context.setMemberListService(memberListServiceInjector.getValue());
    context.setLogStreamsManager(logStreamsManager);
    context.setWorkflowRequestMessageHandler(workflowRequestMessageHandler);
}
Also used : ActorScheduler(io.zeebe.util.sched.ActorScheduler) WorkflowRequestMessageHandler(io.zeebe.broker.system.deployment.handler.WorkflowRequestMessageHandler) ClusterManagerContext(io.zeebe.broker.clustering.management.ClusterManagerContext) ClientTransport(io.zeebe.transport.ClientTransport) LogStreamsManager(io.zeebe.broker.logstreams.LogStreamsManager) BufferingServerTransport(io.zeebe.transport.BufferingServerTransport)

Example 2 with LogStreamsManager

use of io.zeebe.broker.logstreams.LogStreamsManager in project zeebe by zeebe-io.

the class ClusterManager method open.

private void open() {
    final List<SocketAddress> collect = Arrays.stream(transportComponentCfg.gossip.initialContactPoints).map(SocketAddress::from).collect(Collectors.toList());
    if (!collect.isEmpty()) {
        context.getGossip().join(collect);
    }
    clusterMemberListManager.publishNodeAPIAddresses();
    final LogStreamsManager logStreamManager = context.getLogStreamsManager();
    final File storageDirectory = new File(transportComponentCfg.management.directory);
    if (!storageDirectory.exists()) {
        try {
            storageDirectory.getParentFile().mkdirs();
            Files.createDirectory(storageDirectory.toPath());
        } catch (final IOException e) {
            LOG.error("Unable to create directory {}", storageDirectory, e);
        }
    }
    final SocketBindingCfg replicationApi = transportComponentCfg.replicationApi;
    final SocketAddress socketAddress = new SocketAddress(replicationApi.getHost(transportComponentCfg.host), replicationApi.port);
    final File[] storageFiles = storageDirectory.listFiles();
    if (storageFiles != null && storageFiles.length > 0) {
        for (int i = 0; i < storageFiles.length; i++) {
            final File storageFile = storageFiles[i];
            final RaftPersistentFileStorage storage = new RaftPersistentFileStorage(storageFile.getAbsolutePath());
            final DirectBuffer topicName = storage.getTopicName();
            final int partitionId = storage.getPartitionId();
            LogStream logStream = logStreamManager.getLogStream(partitionId);
            if (logStream == null) {
                final String directory = storage.getLogDirectory();
                logStream = logStreamManager.createLogStream(topicName, partitionId, directory);
            }
            storage.setLogStream(logStream);
            createRaft(socketAddress, logStream, storage.getMembers(), storage);
        }
    } else {
        if (transportComponentCfg.gossip.initialContactPoints.length == 0) {
            LOG.debug("Broker bootstraps the system topic");
            createPartition(Protocol.SYSTEM_TOPIC_BUF, Protocol.SYSTEM_PARTITION);
        }
    }
}
Also used : RaftPersistentFileStorage(io.zeebe.broker.clustering.raft.RaftPersistentFileStorage) DirectBuffer(org.agrona.DirectBuffer) IOException(java.io.IOException) SocketBindingCfg(io.zeebe.broker.transport.cfg.SocketBindingCfg) LogStream(io.zeebe.logstreams.log.LogStream) LogStreamsManager(io.zeebe.broker.logstreams.LogStreamsManager) File(java.io.File)

Aggregations

LogStreamsManager (io.zeebe.broker.logstreams.LogStreamsManager)2 ClusterManagerContext (io.zeebe.broker.clustering.management.ClusterManagerContext)1 RaftPersistentFileStorage (io.zeebe.broker.clustering.raft.RaftPersistentFileStorage)1 WorkflowRequestMessageHandler (io.zeebe.broker.system.deployment.handler.WorkflowRequestMessageHandler)1 SocketBindingCfg (io.zeebe.broker.transport.cfg.SocketBindingCfg)1 LogStream (io.zeebe.logstreams.log.LogStream)1 BufferingServerTransport (io.zeebe.transport.BufferingServerTransport)1 ClientTransport (io.zeebe.transport.ClientTransport)1 ActorScheduler (io.zeebe.util.sched.ActorScheduler)1 File (java.io.File)1 IOException (java.io.IOException)1 DirectBuffer (org.agrona.DirectBuffer)1