} 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 {
@SuppressWarnings("unchecked") public PartitionGroupDeserializer(AtomixRegistry registry) { super(PartitionGroup.class, type -> (Class<? extends PartitionGroupConfig<?>>) registry.getType(PartitionGroup.Type.class, type).newConfig().getClass()); } }
/** * 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))); } }
@SuppressWarnings("unchecked") public PartitionGroupDeserializer(AtomixRegistry registry) { super(PartitionGroup.class, type -> (Class<? extends PartitionGroupConfig<?>>) registry.getType(PartitionGroup.Type.class, type).newConfig().getClass()); } }
/** * Adds a partition group type. * * @param partitionGroupType the partition group type to add * @return the registry builder */ public Builder addPartitionGroupType(PartitionGroup.Type partitionGroupType) { registrations.computeIfAbsent(PartitionGroup.Type.class, t -> Maps.newHashMap()).put(partitionGroupType.name(), partitionGroupType); return this; }
/** * 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); }
if (systemGroup == null) { systemGroup = ((PartitionGroup.Type) systemGroupMembership.config().getType()) .newPartitionGroup(systemGroupMembership.config()); if (group == null) { group = ((PartitionGroup.Type) membership.config().getType()) .newPartitionGroup(membership.config()); groups.put(group.name(), group);
groupTypes.sort(Comparator.comparing(PartitionGroup.Type::name)); for (PartitionGroup.Type groupType : groupTypes) { namespaceBuilder.register(groupType.namespace());
@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 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))); } }
public DefaultPartitionGroupTypeRegistry(Collection<PartitionGroup.Type> partitionGroupTypes) { partitionGroupTypes.forEach(type -> this.partitionGroupTypes.put(type.name(), type)); }
/** * Adds a partition group type. * * @param partitionGroupType the partition group type to add * @return the registry builder */ public Builder addPartitionGroupType(PartitionGroup.Type partitionGroupType) { registrations.computeIfAbsent(PartitionGroup.Type.class, t -> Maps.newHashMap()).put(partitionGroupType.name(), partitionGroupType); return this; }
/** * 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); }