Class ConfigurableQuorumPolicy.ClusterQuorumPolicy

    • Field Detail

      • ROLE_ALL

        public static final String ROLE_ALL
        The role identifier to use for matching any cluster members.
        See Also:
        Constant Field Values
      • MACHINES

        public static final String MACHINES
        The role prefix to use for the "timeout-machine-quorum".
        See Also:
        Constant Field Values
      • m_service

        protected Service m_service
        The cluster service.
      • m_mapQuorumByRole

        protected Map<String,​Integer> m_mapQuorumByRole
        The cluster membership quorum map, keyed by role name.
    • Constructor Detail

      • ClusterQuorumPolicy

        protected ClusterQuorumPolicy​(Map<String,​Integer> mapQuorum)
        Construct a ClusterQuorumPolicy with the specified quorum map.
        Parameters:
        mapQuorum - cluster quorum map
    • Method Detail

      • getClusterQuorumMap

        protected Map<String,​Integer> getClusterQuorumMap()
        Return the cluster quorum map, keyed by role name.
        Returns:
        the cluster quorum map
      • setClusterQuorumMap

        protected void setClusterQuorumMap​(Map mapQuorumByRole)
        Set the cluster quorum map, keyed by role name.
        Parameters:
        mapQuorumByRole - the cluster quorum map
      • getService

        public Service getService()
        Return the Cluster service.
        Returns:
        the Cluster service
      • setService

        public void setService​(Service service)
        Set the Cluster service.
        Parameters:
        service - the Cluster service
      • getStatusDescription

        public String getStatusDescription()
        Return a String that describes the current Quorum state.
        Specified by:
        getStatusDescription in class ConfigurableQuorumPolicy
        Returns:
        a String describing the allowed actions in the current state
      • ensureSet

        protected Set ensureSet​(Set set)
        Return the specified set, or an empty set if null.
        Parameters:
        set - the set to ensure, or null
        Returns:
        the specified set, or an empty set if null
      • groupMembersByRole

        protected Map<String,​Set<Member>> groupMembersByRole​(Set<Member> setMembers)
        Group the specified set of Members by their roles.
        Parameters:
        setMembers - the set of Members
        Returns:
        a map, keyed by role name, of the subsets of Members in that role
      • checkSiteQuorum

        protected boolean checkSiteQuorum​(int cQuorum,
                                          Set<Member> setMembers,
                                          Set<Member> setTimedOut,
                                          Set<Member> setHealthy,
                                          Set<Member> setAnnouncing)
        Check whether the site quorum for the specified role will be satisfied if the set of suspect members is disconnected from the cluster, given the sets of "healthy" and "announcing" members.
        Parameters:
        setMembers - the set of cluster members in the specified role
        setTimedOut - the subset of cluster members in the specified role that are timed-out. A member is considered timed-out if it has not responded to some network communications within the configured timeout, and it has been selected for termination
        setHealthy - the subset of cluster members in the specified role that are known to be "healthy". A member is "healthy" if it has been "recently" heard from
        setAnnouncing - the set of potential new cluster members in the specified role that are announcing their presence and waiting to join the cluster
        Returns:
        true iff the site quorum for the specified role would be preserved if the specified timed-out members were disconnected
      • checkMachineQuorum

        protected boolean checkMachineQuorum​(int cQuorum,
                                             Set<Member> setMembers,
                                             Set<Member> setTimedOut,
                                             Set<Member> setHealthy,
                                             Set<Member> setAnnouncing)
        Check whether the machine quorum for the specified role will be satisfied if the set of suspect members is disconnected from the cluster, given the sets of "healthy" and "announcing" members.
        Parameters:
        setMembers - the set of cluster members in the specified role
        setTimedOut - the subset of cluster members in the specified role that are timed-out. A member is considered timed-out if it has not responded to some network communications within the configured timeout, and it has been selected for termination
        setHealthy - the subset of cluster members in the specified role that are known to be "healthy". A member is "healthy" if it has been "recently" heard from
        setAnnouncing - the set of potential new cluster members in the specified role that are announcing their presence and waiting to join the cluster
        Returns:
        true iff the site quorum for the specified role would be preserved if the specified timed-out members were disconnected
      • checkRoleQuorum

        protected boolean checkRoleQuorum​(int cQuorum,
                                          Set setMembers,
                                          Set setTimedOut,
                                          Set setHealthy,
                                          Set setAnnouncing)
        Check whether the member quorum for the specified role will be satisfied if the set of suspect members is disconnected from the cluster, given the sets of "healthy" and "announcing" members.
        Parameters:
        setMembers - the set of cluster members in the specified role
        setTimedOut - the subset of cluster members in the specified role that are timed-out. A member is considered timed-out if it has not responded to some network communications within the configured timeout, and it has been selected for termination
        setHealthy - the subset of cluster members in the specified role that are known to be "healthy". A member is "healthy" if it has been "recently" heard from
        setAnnouncing - the set of potential new cluster members in the specified role that are announcing their presence and waiting to join the cluster
        Returns:
        true iff the member quorum for the specified role would be preserved if the specified timed-out members were disconnected
      • init

        public void init​(Service service)
        Called when the specified service loads and configures this policy.

        Note: A policy could be applied to multiple services.

        Specified by:
        init in interface ActionPolicy
        Parameters:
        service - the service that this policy applies to
      • isAllowed

        public boolean isAllowed​(Service service,
                                 Action action)
        Evaluate if the specified action is currently allowed by this policy.

        Note: for forward compatibility, implementations should generally return true for actions that are not recognized.

        Specified by:
        isAllowed in interface ActionPolicy
        Parameters:
        service - the service that is performing the action
        action - the action that is being performed
        Returns:
        true iff the specified action is currently allowed by this policy