Search in sources :

Example 1 with PostJoinAwareService

use of com.hazelcast.internal.services.PostJoinAwareService in project hazelcast by hazelcast.

the class AbstractMapServiceFactory method createMapService.

/**
 * Returns a {@link MapService} object by populating it with required
 * auxiliary services.
 *
 * @return {@link MapService} object
 */
@Override
public MapService createMapService() {
    NodeEngine nodeEngine = getNodeEngine();
    MapServiceContext mapServiceContext = getMapServiceContext();
    ManagedService managedService = createManagedService();
    CountingMigrationAwareService migrationAwareService = createMigrationAwareService();
    TransactionalService transactionalService = createTransactionalService();
    RemoteService remoteService = createRemoteService();
    EventPublishingService eventPublishingService = createEventPublishingService();
    PostJoinAwareService postJoinAwareService = createPostJoinAwareService();
    SplitBrainHandlerService splitBrainHandlerService = createSplitBrainHandlerService();
    WanSupportingService wanSupportingService = createReplicationSupportingService();
    StatisticsAwareService statisticsAwareService = createStatisticsAwareService();
    PartitionAwareService partitionAwareService = createPartitionAwareService();
    MapSplitBrainProtectionAwareService splitBrainProtectionAwareService = createSplitBrainProtectionAwareService();
    ClientAwareService clientAwareService = createClientAwareService();
    checkNotNull(nodeEngine, "nodeEngine should not be null");
    checkNotNull(mapServiceContext, "mapServiceContext should not be null");
    checkNotNull(managedService, "managedService should not be null");
    checkNotNull(migrationAwareService, "migrationAwareService should not be null");
    checkNotNull(transactionalService, "transactionalService should not be null");
    checkNotNull(remoteService, "remoteService should not be null");
    checkNotNull(eventPublishingService, "eventPublishingService should not be null");
    checkNotNull(postJoinAwareService, "postJoinAwareService should not be null");
    checkNotNull(splitBrainHandlerService, "splitBrainHandlerService should not be null");
    checkNotNull(wanSupportingService, "replicationSupportingService should not be null");
    checkNotNull(statisticsAwareService, "statisticsAwareService should not be null");
    checkNotNull(partitionAwareService, "partitionAwareService should not be null");
    checkNotNull(splitBrainProtectionAwareService, "splitBrainProtectionAwareService should not be null");
    checkNotNull(clientAwareService, "clientAwareService should not be null");
    MapService mapService = new MapService();
    mapService.managedService = managedService;
    mapService.migrationAwareService = migrationAwareService;
    mapService.transactionalService = transactionalService;
    mapService.remoteService = remoteService;
    mapService.eventPublishingService = eventPublishingService;
    mapService.postJoinAwareService = postJoinAwareService;
    mapService.splitBrainHandlerService = splitBrainHandlerService;
    mapService.wanSupportingService = wanSupportingService;
    mapService.statisticsAwareService = statisticsAwareService;
    mapService.mapServiceContext = mapServiceContext;
    mapService.partitionAwareService = partitionAwareService;
    mapService.splitBrainProtectionAwareService = splitBrainProtectionAwareService;
    mapService.clientAwareService = clientAwareService;
    mapServiceContext.setService(mapService);
    return mapService;
}
Also used : ManagedService(com.hazelcast.internal.services.ManagedService) StatisticsAwareService(com.hazelcast.internal.services.StatisticsAwareService) TransactionalService(com.hazelcast.internal.services.TransactionalService) CountingMigrationAwareService(com.hazelcast.spi.impl.CountingMigrationAwareService) NodeEngine(com.hazelcast.spi.impl.NodeEngine) ClientAwareService(com.hazelcast.internal.services.ClientAwareService) PostJoinAwareService(com.hazelcast.internal.services.PostJoinAwareService) RemoteService(com.hazelcast.internal.services.RemoteService) WanSupportingService(com.hazelcast.internal.services.WanSupportingService) SplitBrainHandlerService(com.hazelcast.internal.services.SplitBrainHandlerService) PartitionAwareService(com.hazelcast.internal.partition.PartitionAwareService) EventPublishingService(com.hazelcast.spi.impl.eventservice.EventPublishingService)

Example 2 with PostJoinAwareService

use of com.hazelcast.internal.services.PostJoinAwareService in project hazelcast by hazelcast.

the class NodeEngineImpl method getPostJoinOperations.

/**
 * Collects all post-join operations from {@link PostJoinAwareService}s.
 * <p>
 * Post join operations should return response, at least a {@code null} response.
 * <p>
 * <b>Note</b>: Post join operations must be lock free, meaning no locks at all:
 * no partition locks, no key-based locks, no service level locks, no database interaction!
 * The {@link Operation#getPartitionId()} method should return a negative value.
 * This means that the operations should not implement {@link PartitionAwareOperation}.
 *
 * @return the operations to be executed at the end of a finalized join
 */
public Collection<Operation> getPostJoinOperations() {
    Collection<Operation> postJoinOps = new LinkedList<>();
    Collection<PostJoinAwareService> services = getServices(PostJoinAwareService.class);
    for (PostJoinAwareService service : services) {
        Operation postJoinOperation = service.getPostJoinOperation();
        if (postJoinOperation != null) {
            if (postJoinOperation.getPartitionId() >= 0) {
                logger.severe("Post-join operations should not have partition ID set! Service: " + service + ", Operation: " + postJoinOperation);
                continue;
            }
            postJoinOps.add(postJoinOperation);
        }
    }
    return postJoinOps;
}
Also used : PostJoinAwareService(com.hazelcast.internal.services.PostJoinAwareService) PartitionAwareOperation(com.hazelcast.spi.impl.operationservice.PartitionAwareOperation) Operation(com.hazelcast.spi.impl.operationservice.Operation) LinkedList(java.util.LinkedList)

Aggregations

PostJoinAwareService (com.hazelcast.internal.services.PostJoinAwareService)2 PartitionAwareService (com.hazelcast.internal.partition.PartitionAwareService)1 ClientAwareService (com.hazelcast.internal.services.ClientAwareService)1 ManagedService (com.hazelcast.internal.services.ManagedService)1 RemoteService (com.hazelcast.internal.services.RemoteService)1 SplitBrainHandlerService (com.hazelcast.internal.services.SplitBrainHandlerService)1 StatisticsAwareService (com.hazelcast.internal.services.StatisticsAwareService)1 TransactionalService (com.hazelcast.internal.services.TransactionalService)1 WanSupportingService (com.hazelcast.internal.services.WanSupportingService)1 CountingMigrationAwareService (com.hazelcast.spi.impl.CountingMigrationAwareService)1 NodeEngine (com.hazelcast.spi.impl.NodeEngine)1 EventPublishingService (com.hazelcast.spi.impl.eventservice.EventPublishingService)1 Operation (com.hazelcast.spi.impl.operationservice.Operation)1 PartitionAwareOperation (com.hazelcast.spi.impl.operationservice.PartitionAwareOperation)1 LinkedList (java.util.LinkedList)1