aeron-cluster/src/main/java/io/aeron/cluster/ClusterMember.java
public static boolean hasMajorityVoteWithCanvassMembers(final ClusterMember[] members, final long candidateTermId)
    {
        int votes = 0;
        for (final ClusterMember member : members)
        {
            if (NULL_POSITION != member.logPosition && null == member.vote)
            {
                return false;
            }

            if (Boolean.TRUE.equals(member.vote) && member.candidateTermId == candidateTermId)
            {
                ++votes;
            }
        }

        return votes >= ClusterMember.quorumThreshold(members.length);
    }
public static boolean hasMajorityVoteWithCanvassMembers(final ClusterMember[] members, final long candidateTermId)
    {
        int votes = 0;
        for (final ClusterMember member : members)
        {
            if (NULL_POSITION != member.logPosition && null == member.vote)
            {
                return false;
            }

            if (Boolean.TRUE.equals(member.vote) && member.candidateTermId == candidateTermId)
            {
                ++votes;
            }
        }

        return votes >= ClusterMember.quorumThreshold(members.length);
    }
Has sufficient votes being counted for a majority for all members observed during {@link Election.State#CANVASS}?

@param members         to check for votes.
@param candidateTermId for the vote.
@return false if any member has not voted for the candidate.