use of io.zeebe.logstreams.processor.StreamProcessorController in project zeebe by zeebe-io.
the class TaskSubscriptionManager method removeStreamProcessorService.
protected ActorFuture<Void> removeStreamProcessorService(final LockTaskStreamProcessor streamProcessor) {
final LogStreamBucket logStreamBucket = logStreamBuckets.get(streamProcessor.getLogStreamPartitionId());
logStreamBucket.removeStreamProcessor(streamProcessor);
final String logName = logStreamBucket.getLogStream().getLogName();
final String taskType = bufferAsString(streamProcessor.getSubscriptedTaskType());
final ServiceName<StreamProcessorController> streamProcessorServiceName = taskQueueLockStreamProcessorServiceName(logName, taskType);
return serviceContext.removeService(streamProcessorServiceName);
}
use of io.zeebe.logstreams.processor.StreamProcessorController in project zeebe by zeebe-io.
the class TaskSubscriptionManager method createStreamProcessorService.
protected ActorFuture<Void> createStreamProcessorService(final LockTaskStreamProcessor factory, DirectBuffer newTaskTypeBuffer, final LogStreamBucket logStreamBucket, final DirectBuffer taskType) {
final TypedStreamEnvironment env = new TypedStreamEnvironment(logStreamBucket.getLogStream(), transport.getOutput());
final TypedStreamProcessor streamProcessor = factory.createStreamProcessor(env);
final ServiceName<LogStream> logStreamServiceName = logStreamBucket.getLogServiceName();
final String logName = logStreamBucket.getLogStream().getLogName();
final ServiceName<StreamProcessorController> streamProcessorServiceName = taskQueueLockStreamProcessorServiceName(logName, bufferAsString(taskType));
final String streamProcessorName = streamProcessorServiceName.getName();
final StreamProcessorService streamProcessorService = new StreamProcessorService(streamProcessorName, TASK_LOCK_STREAM_PROCESSOR_ID, streamProcessor).eventFilter(streamProcessor.buildTypeFilter());
return serviceContext.createService(streamProcessorServiceName, streamProcessorService).dependency(logStreamServiceName, streamProcessorService.getLogStreamInjector()).dependency(SNAPSHOT_STORAGE_SERVICE, streamProcessorService.getSnapshotStorageInjector()).install();
}
use of io.zeebe.logstreams.processor.StreamProcessorController in project zeebe by zeebe-io.
the class TaskQueueManagerService method startTaskQueue.
@Override
public void startTaskQueue(ServiceName<LogStream> logStreamServiceName, final LogStream stream) {
final ServiceName<StreamProcessorController> streamProcessorServiceName = taskQueueInstanceStreamProcessorServiceName(stream.getLogName());
final String streamProcessorName = streamProcessorServiceName.getName();
final ServerTransport serverTransport = clientApiTransportInjector.getValue();
final TaskSubscriptionManager taskSubscriptionManager = taskSubscriptionManagerInjector.getValue();
final TaskInstanceStreamProcessor taskInstanceStreamProcessor = new TaskInstanceStreamProcessor(taskSubscriptionManager);
final TypedStreamEnvironment env = new TypedStreamEnvironment(stream, serverTransport.getOutput());
final TypedStreamProcessor streamProcessor = taskInstanceStreamProcessor.createStreamProcessor(env);
final StreamProcessorService taskInstanceStreamProcessorService = new StreamProcessorService(streamProcessorName, TASK_QUEUE_STREAM_PROCESSOR_ID, streamProcessor).eventFilter(streamProcessor.buildTypeFilter());
serviceContext.createService(streamProcessorServiceName, taskInstanceStreamProcessorService).group(TASK_QUEUE_STREAM_PROCESSOR_SERVICE_GROUP_NAME).dependency(logStreamServiceName, taskInstanceStreamProcessorService.getLogStreamInjector()).dependency(SNAPSHOT_STORAGE_SERVICE, taskInstanceStreamProcessorService.getSnapshotStorageInjector()).install();
startExpireLockService(logStreamServiceName, stream, env);
}
use of io.zeebe.logstreams.processor.StreamProcessorController in project zeebe by zeebe-io.
the class WorkflowQueueManagerService method installIncidentStreamProcessor.
private void installIncidentStreamProcessor(final LogStream logStream) {
final ServiceName<StreamProcessorController> streamProcessorServiceName = incidentStreamProcessorServiceName(logStream.getLogName());
final String streamProcessorName = streamProcessorServiceName.getName();
final ServerTransport transport = clientApiTransportInjector.getValue();
final ServiceName<LogStream> logStreamServiceName = logStreamServiceName(logStream.getLogName());
final TypedStreamEnvironment env = new TypedStreamEnvironment(logStream, transport.getOutput());
final IncidentStreamProcessor incidentProcessorFactory = new IncidentStreamProcessor();
final TypedStreamProcessor streamProcessor = incidentProcessorFactory.createStreamProcessor(env);
final StreamProcessorService incidentStreamProcessorService = new StreamProcessorService(streamProcessorName, INCIDENT_PROCESSOR_ID, streamProcessor).eventFilter(streamProcessor.buildTypeFilter());
serviceContext.createService(streamProcessorServiceName, incidentStreamProcessorService).dependency(logStreamServiceName, incidentStreamProcessorService.getLogStreamInjector()).dependency(SNAPSHOT_STORAGE_SERVICE, incidentStreamProcessorService.getSnapshotStorageInjector()).install();
}
use of io.zeebe.logstreams.processor.StreamProcessorController in project zeebe by zeebe-io.
the class ServicesLifecycleTest method shouldShutdownStreamProcessingBeforeLogStream.
@Test
public void shouldShutdownStreamProcessingBeforeLogStream() throws Exception {
// given
final Broker broker = brokerRule.getBroker();
final ServiceContainer serviceContainer = broker.getBrokerContext().getServiceContainer();
final String logStreamName = ClientApiRule.DEFAULT_TOPIC_NAME + "." + apiRule.getDefaultPartitionId();
final ServiceName<StreamProcessorController> streamProcessorServiceName = WorkflowQueueServiceNames.workflowInstanceStreamProcessorServiceName(logStreamName);
final ServiceName<Raft> raftServiceName = ClusterServiceNames.raftServiceName(logStreamName);
final StreamProcessorController streamProcessorController = getService(serviceContainer, streamProcessorServiceName);
// when
serviceContainer.removeService(raftServiceName).get();
// then
assertThat(!streamProcessorController.isOpened()).isTrue();
assertThat(streamProcessorController.isFailed()).isFalse();
}
Aggregations