/** * Groups nodes by the given key function. * * @param members the nodes to group * @param keyFunction the key function to apply to nodes to extract a key * @return a collection of node member groups */ protected Collection<MemberGroup> groupNodes(Collection<Member> members, Function<Member, String> keyFunction) { Map<String, Set<Member>> groups = new HashMap<>(); for (Member member : members) { groups.computeIfAbsent(keyFunction.apply(member), k -> new HashSet<>()).add(member); } return groups.entrySet().stream() .map(entry -> new NodeMemberGroup(MemberGroupId.from(entry.getKey()), entry.getValue())) .collect(Collectors.toList()); } }
Member member = clusterMembershipService.getMember(memberId); if (member != null && member.isReachable()) { candidates.add(new GroupMember(memberId, MemberGroupId.from(memberId.id())));