/** * 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); }
/** * Adds a partition group configuration. * * @param partitionGroup the partition group configuration to add * @return the Atomix configuration */ public AtomixConfig addPartitionGroup(PartitionGroupConfig partitionGroup) { partitionGroups.put(partitionGroup.getName(), partitionGroup); return this; }
/** * Sets the system management partition group. * * @param managementGroup the system management partition group * @return the Atomix configuration */ public AtomixConfig setManagementGroup(PartitionGroupConfig<?> managementGroup) { managementGroup.setName(MANAGEMENT_GROUP_NAME); this.managementGroup = managementGroup; return this; }
} 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 {
/** * Sets the partition group configurations. * * @param partitionGroups the partition group configurations * @return the Atomix configuration */ public AtomixConfig setPartitionGroups(Map<String, PartitionGroupConfig<?>> partitionGroups) { partitionGroups.forEach((name, group) -> group.setName(name)); this.partitionGroups = partitionGroups; return this; }
/** * Adds a partition group configuration. * * @param partitionGroup the partition group configuration to add * @return the Atomix configuration */ public AtomixConfig addPartitionGroup(PartitionGroupConfig partitionGroup) { partitionGroups.put(partitionGroup.getName(), partitionGroup); return this; }
/** * 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))); } }
/** * Sets the system management partition group. * * @param managementGroup the system management partition group * @return the Atomix configuration */ public AtomixConfig setManagementGroup(PartitionGroupConfig<?> managementGroup) { managementGroup.setName(MANAGEMENT_GROUP_NAME); this.managementGroup = managementGroup; return this; }
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);
/** * Sets the partition group configurations. * * @param partitionGroups the partition group configurations * @return the Atomix configuration */ public AtomixConfig setPartitionGroups(Map<String, PartitionGroupConfig<?>> partitionGroups) { partitionGroups.forEach((name, group) -> group.setName(name)); this.partitionGroups = partitionGroups; return this; }
@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))); } }