/** * Builds the core partition group. */ @SuppressWarnings("unchecked") private static ManagedPartitionGroup buildSystemPartitionGroup(AtomixConfig config) { PartitionGroupConfig<?> partitionGroupConfig = config.getManagementGroup(); if (partitionGroupConfig == null) { return null; } return partitionGroupConfig.getType().newPartitionGroup(partitionGroupConfig); }
/** * Builds a partition service. */ @SuppressWarnings("unchecked") private static ManagedPartitionService buildPartitionService( AtomixConfig config, ClusterMembershipService clusterMembershipService, ClusterCommunicationService messagingService, AtomixRegistry registry) { List<ManagedPartitionGroup> partitionGroups = new ArrayList<>(); for (PartitionGroupConfig<?> partitionGroupConfig : config.getPartitionGroups().values()) { partitionGroups.add(partitionGroupConfig.getType().newPartitionGroup(partitionGroupConfig)); } return new DefaultPartitionService( clusterMembershipService, messagingService, new DefaultPrimitiveTypeRegistry(registry.getTypes(PrimitiveType.class)), buildSystemPartitionGroup(config), partitionGroups, new DefaultPartitionGroupTypeRegistry(registry.getTypes(PartitionGroup.Type.class))); } }
} else if (systemGroup != null && info.systemGroup != null) { if (!systemGroup.group().equals(info.systemGroup.group()) || !systemGroup.config().getType().name().equals(info.systemGroup.config().getType().name())) { throw new ConfigurationException("Duplicate system group detected"); } else { LOGGER.info("{} - Bootstrapped partition group {} from {}", membershipService.getLocalMember().id(), newMembership, info.memberId); } else if (!oldMembership.group().equals(newMembership.group()) || !oldMembership.config().getType().name().equals(newMembership.config().getType().name())) { throw new ConfigurationException("Duplicate partition group " + newMembership.group() + " detected"); } else {
if (systemGroupMembership != null) { if (systemGroup == null) { systemGroup = ((PartitionGroup.Type) systemGroupMembership.config().getType()) .newPartitionGroup(systemGroupMembership.config()); group = groups.get(membership.group()); if (group == null) { group = ((PartitionGroup.Type) membership.config().getType()) .newPartitionGroup(membership.config()); groups.put(group.name(), group);
@SuppressWarnings("unchecked") private void handleMembershipChange(PartitionGroupMembershipEvent event) { if (partitionManagementService == null) { return; } if (!event.membership().system()) { synchronized (groups) { ManagedPartitionGroup group = groups.get(event.membership().group()); if (group == null) { group = ((PartitionGroup.Type) event.membership().config().getType()) .newPartitionGroup(event.membership().config()); groups.put(event.membership().group(), group); if (event.membership().members().contains(clusterMembershipService.getLocalMember().id())) { group.join(partitionManagementService); } else { group.connect(partitionManagementService); } } } } }
/** * Builds the core partition group. */ @SuppressWarnings("unchecked") private static ManagedPartitionGroup buildSystemPartitionGroup(AtomixConfig config) { PartitionGroupConfig<?> partitionGroupConfig = config.getManagementGroup(); if (partitionGroupConfig == null) { return null; } return partitionGroupConfig.getType().newPartitionGroup(partitionGroupConfig); }
/** * Builds a partition service. */ @SuppressWarnings("unchecked") private static ManagedPartitionService buildPartitionService( AtomixConfig config, ClusterMembershipService clusterMembershipService, ClusterCommunicationService messagingService, AtomixRegistry registry) { List<ManagedPartitionGroup> partitionGroups = new ArrayList<>(); for (PartitionGroupConfig<?> partitionGroupConfig : config.getPartitionGroups().values()) { partitionGroups.add(partitionGroupConfig.getType().newPartitionGroup(partitionGroupConfig)); } return new DefaultPartitionService( clusterMembershipService, messagingService, new DefaultPrimitiveTypeRegistry(registry.getTypes(PrimitiveType.class)), buildSystemPartitionGroup(config), partitionGroups, new DefaultPartitionGroupTypeRegistry(registry.getTypes(PartitionGroup.Type.class))); } }