private void updatePartitionGroups(PartitionGroupInfo info) {
if (systemGroup == null && info.systemGroup != null) {
systemGroup = info.systemGroup;
post(new PartitionGroupMembershipEvent(MEMBERS_CHANGED, systemGroup));
LOGGER.info("{} - Bootstrapped management group {} from {}", membershipService.getLocalMember().id(), systemGroup, info.memberId);
} else if (systemGroup != null && info.systemGroup != null) {
if (!Sets.difference(newMembers, systemGroup.members()).isEmpty()) {
systemGroup = new PartitionGroupMembership(systemGroup.group(), systemGroup.config(), ImmutableSet.copyOf(newMembers), true);
post(new PartitionGroupMembershipEvent(MEMBERS_CHANGED, systemGroup));
LOGGER.debug("{} - Updated management group {} from {}", membershipService.getLocalMember().id(), systemGroup, info.memberId);
if (oldMembership == null) {
groups.put(newMembership.group(), newMembership);
post(new PartitionGroupMembershipEvent(MEMBERS_CHANGED, newMembership));
LOGGER.info("{} - Bootstrapped partition group {} from {}", membershipService.getLocalMember().id(), newMembership, info.memberId);
} else if (!oldMembership.group().equals(newMembership.group())
PartitionGroupMembership newGroup = new PartitionGroupMembership(oldMembership.group(), oldMembership.config(), ImmutableSet.copyOf(newMembers), false);
groups.put(oldMembership.group(), newGroup);
post(new PartitionGroupMembershipEvent(MEMBERS_CHANGED, newGroup));
LOGGER.debug("{} - Updated partition group {} from {}", membershipService.getLocalMember().id(), newGroup, info.memberId);